Chamada de método imediatamente após a criação de um objeto em POO em PHP
Suponha que temos uma classe Arr que
armazena um array de números e pode calcular
a soma desses números usando o método getSum.
Os próprios números são passados como um array para o construtor
do objeto e também podem ser adicionados um por um
usando o 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);
}
}
?>
Aqui está um exemplo de uso da classe Arr:
<?php
$arr = new Arr([1, 2, 3]);
$arr->add(4);
$arr->add(5);
echo $arr->getSum(); // exibirá 15
?>
Pode acontecer que passemos todos os números necessários no momento da criação do objeto e, em seguida, queiramos imediatamente encontrar a soma deles:
<?php
$arr = new Arr([1, 2, 3]);
echo $arr->getSum(); // exibirá 6
?>
Se não planejamos fazer mais nenhuma
manipulação com o objeto, o código acima pode
ser reescrito de forma mais curta: podemos criar o objeto e
chamar imediatamente seu método getSum:
<?php
echo (new Arr([1, 2, 3]))->getSum(); // exibirá 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);
}
}
?>
Suponha que trabalharam com esta classe da seguinte forma:
<?php
$str = new Str('aaa');
$str->append('bbb');
$str->append('ccc');
echo $str->getLength();
?>
Reescreva este código usando a chamada da classe no local.