Objektum létrehozása után azonnali metódushívás OOP-ban PHP-ben
Tegyük fel, hogy van egy Arr osztályunk, amely
számokat tárol egy tömbben és képes kiszámolni
ezen számok összegét a getSum metódus segítségével.
Maga a számok egy tömb formájában érkeznek az objektum
konstruktorába, és egyenként is hozzáadhatók
a add metódussal:
<?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);
}
}
?>
Itt egy példa a Arr osztály használatára:
<?php
$arr = new Arr([1, 2, 3]);
$arr->add(4);
$arr->add(5);
echo $arr->getSum(); // kiírja 15-öt
?>
Előfordulhat, hogy az összes szükséges számot az objektum létrehozásakor átadjuk, majd azonnal meg akarjuk találni azok összegét:
<?php
$arr = new Arr([1, 2, 3]);
echo $arr->getSum(); // kiírja 6-ot
?>
Ha nem tervezünk további manipulációkat az objektummal,
akkor a fenti kód rövidebben is írható: létrehozhatjuk
az objektumot és azonnal meghívhatjuk a getSum metódusát:
<?php
echo (new Arr([1, 2, 3]))->getSum(); // kiírja 6-ot
?>
<?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);
}
}
?>
Tegyük fel, hogy ezzel az osztállyal a következő módon dolgoztak:
<?php
$str = new Str('aaa');
$str->append('bbb');
$str->append('ccc');
echo $str->getLength();
?>
Írja át ezt a kódot az osztály helyben való meghívásával.