PHPのOOPにおけるオブジェクト作成直後のメソッド呼び出し
数値の配列を保持し、メソッド getSum を使ってそれらの数値の合計を計算できる
クラス Arr があるとします。
数値自体は配列としてオブジェクトのコンストラクタに渡され、またメソッド add を使って
個別に追加することもできます:
<?php
class Arr
{
private $numbers = [];
public function __construct($numbers)
{
$this->numbers = $numbers;
}
public function add($number)
{
$this->numbers[] = $number;
}
public function getSum()
{
return array_sum($this->numbers);
}
}
?>
以下はクラス Arr の使用例です:
<?php
$arr = new Arr([1, 2, 3]);
$arr->add(4);
$arr->add(5);
echo $arr->getSum(); // 15 を出力します
?>
すべての必要な数値をオブジェクト作成時に渡し、 その後すぐにそれらの合計を求めたい場合があるかもしれません:
<?php
$arr = new Arr([1, 2, 3]);
echo $arr->getSum(); // 6 を出力します
?>
もしオブジェクトに対してこれ以上何も操作を行わないのであれば、
上記のコードはより短く書き換えることができます:
オブジェクトを作成してすぐにそのメソッド getSum を呼び出すことができます:
<?php
echo (new Arr([1, 2, 3]))->getSum(); // 6 を出力します
?>
<?php
class StringProcessor
{
private $str = '';
public function __construct($text)
{
$this->str = $text;
}
public function append($text)
{
$this->str .= $text;
return $this;
}
public function getValue()
{
return $this->str;
}
public function getLength()
{
return strlen($this->str);
}
}
?>
このクラスを次のように使用したとします:
<?php
$str = new Str('aaa');
$str->append('bbb');
$str->append('ccc');
echo $str->getLength();
?>
このコードを、その場でのクラス呼び出しを使って書き直してください。