Llamar a un método inmediatamente después de crear un objeto en POO en PHP
Supongamos que tenemos una clase Arr que
almacena un array de números y puede calcular
la suma de estos números mediante el método getSum.
Los números mismos llegan en forma de array al constructor
del objeto, y también pueden agregarse de uno en uno
utilizando el método 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);
}
}
?>
He aquí un ejemplo de uso de la clase Arr:
<?php
$arr = new Arr([1, 2, 3]);
$arr->add(4);
$arr->add(5);
echo $arr->getSum(); // mostrará 15
?>
Puede suceder que pasemos todos los números necesarios en el momento de crear el objeto, y luego inmediatamente queramos encontrar su suma:
<?php
$arr = new Arr([1, 2, 3]);
echo $arr->getSum(); // mostrará 6
?>
Si no planeamos realizar más
manipulaciones con el objeto, entonces el código anterior se puede
reescribir de forma más breve: podemos crear el objeto e
inmediatamente llamar a su método getSum:
<?php
echo (new Arr([1, 2, 3]))->getSum(); // mostrará 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);
}
}
?>
Supongamos que se trabajó con esta clase de la siguiente manera:
<?php
$str = new Str('aaa');
$str->append('bbb');
$str->append('ccc');
echo $str->getLength();
?>
Reescribe este código mediante la llamada a la clase en el mismo lugar.