Apelarea metodei imediat după crearea obiectului în OOP în PHP
Să presupunem că avem clasa Arr, care
stochează un tablou de numere și poate calcula
suma acestor numere folosind metoda getSum.
Numerele în sine sunt transmise ca tablou în constructorul
obiectului și pot fi adăugate unul câte unul
folosind metoda 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);
}
}
?>
Iată un exemplu de utilizare a clasei Arr:
<?php
$arr = new Arr([1, 2, 3]);
$arr->add(4);
$arr->add(5);
echo $arr->getSum(); // va afișa 15
?>
Se poate întâmpla ca toate numerele necesare să le transmitem în momentul creării obiectului, iar apoi să dorim imediat să le găsim suma:
<?php
$arr = new Arr([1, 2, 3]);
echo $arr->getSum(); // va afișa 6
?>
Dacă nu mai planificăm să facem nicio
manipulare cu obiectul, atunci codul de mai sus poate fi
rescris mai scurt: putem crea obiectul și
imediat să apelăm metoda sa getSum:
<?php
echo (new Arr([1, 2, 3]))->getSum(); // va afișa 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);
}
}
?>
Să presupunem că s-a lucrat cu această clasă în felul următor:
<?php
$str = new Str('aaa');
$str->append('bbb');
$str->append('ccc');
echo $str->getLength();
?>
Rescrieți acest cod prin apelarea clasei pe loc.