Chiamare un metodo subito dopo la creazione di un oggetto in OOP in PHP
Supponiamo di avere una classe Arr che
conserva un array di numeri e può calcolare
la somma di questi numeri con il metodo getSum.
I numeri stessi vengono passati come array al costruttore
dell'oggetto, e possono anche essere aggiunti singolarmente
con il metodo 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);
}
}
?>
Ecco un esempio di utilizzo della classe Arr:
<?php
$arr = new Arr([1, 2, 3]);
$arr->add(4);
$arr->add(5);
echo $arr->getSum(); // visualizzerà 15
?>
Può succedere che passiamo tutti i numeri necessari al momento della creazione dell'oggetto, e subito dopo vogliamo trovare la loro somma:
<?php
$arr = new Arr([1, 2, 3]);
echo $arr->getSum(); // visualizzerà 6
?>
Se non prevediamo di effettuare altre
manipolazioni con l'oggetto, il codice sopra può
essere riscritto in modo più breve: possiamo creare l'oggetto e
chiamare immediatamente il suo metodo getSum:
<?php
echo (new Arr([1, 2, 3]))->getSum(); // visualizzerà 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);
}
}
?>
Supponiamo che con questa classe si sia lavorato nel modo seguente:
<?php
$str = new Str('aaa');
$str->append('bbb');
$str->append('ccc');
echo $str->getLength();
?>
Riscrivi questo codice tramite la chiamata della classe sul posto.