Извикване на метод веднага след създаване на обект в ООП в PHP
Нека имаме клас Arr, който
съхранява масив от числа и може да изчислява
тяхната сума чрез метода getSum.
Самите числа се подават под формата на масив в конструктора
на обекта, а също могат да се добавят по едно
чрез метода 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();
?>
Пренапишете този код чрез извикване на класа на място.