いいえ、できません。あなたの代わりに何ができるか
コンストラクタで初期化を行うことである。それはあなたがいるので、コンストラクタ内の任意の計算を行うことを避けるようにしてくださいので、
class Foo
{
private $a = 'something';
private $b;
public function __construct()
{
$this->b = $this->a . 'foobar';
}
}
Buuuut、これは実際には、やや疑問の練習になりますロジックのその部分を実際にテストする能力が失われます(コンストラクタは常に実行されるため、前後の状態を比較する方法はありません)。
もっと良い方法は、ゲッター・メソッドでこのロジックを残すために、次のようになります。このコードで
class Foo
{
const DEFAULT_VALUE = 'lorem ipsum';
const DEFAULT_PREFIX = '_';
private $bar;
public function __construct(string $bar = self::DEFAULT_VALUE)
{
$this->bar = $bar;
}
public function getPrefixedBar(string $prefix = self::DEFAULT_PREFIX)
{
return $prefix . $this->bar;
}
}
あなたが得る:
$a = new Foo;
echo $a->getPrefixedBar(); // shows: '_lorem ipsum';
echo $a->getPrefixedBar('test '); // shows: 'test lorem ipsum';
$b = new Foo('xx');
echo $b->getPrefixedBar(); // shows: '_xx';
これは受け入れ答えなければなりません – Akintunde007