Aufruf einer Methode direkt nach der Objekterstellung in OOP in PHP
Nehmen wir an, wir haben eine Klasse Arr, die
ein Array von Zahlen speichert und die Summe
dieser Zahlen mit der Methode getSum berechnen kann.
Die Zahlen selbst werden als Array an den Konstruktor
des Objekts übergeben und können auch einzeln
mit der Methode add hinzugefügt werden:
<?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);
}
}
?>
Hier ist ein Beispiel für die Verwendung der Klasse Arr:
<?php
$arr = new Arr([1, 2, 3]);
$arr->add(4);
$arr->add(5);
echo $arr->getSum(); // gibt 15 aus
?>
Es kann vorkommen, dass wir alle benötigten Zahlen zum Zeitpunkt der Objekterstellung übergeben und dann sofort deren Summe berechnen wollen:
<?php
$arr = new Arr([1, 2, 3]);
echo $arr->getSum(); // gibt 6 aus
?>
Wenn wir nicht vorhaben, weitere Manipulationen
mit dem Objekt durchzuführen, kann der obige Code
kürzer geschrieben werden: wir können ein Objekt erstellen und
sofort seine Methode getSum aufrufen:
<?php
echo (new Arr([1, 2, 3]))->getSum(); // gibt 6 aus
?>
<?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);
}
}
?>
Nehmen wir an, mit dieser Klasse wurde folgendermaßen gearbeitet:
<?php
$str = new Str('aaa');
$str->append('bbb');
$str->append('ccc');
echo $str->getLength();
?>
Schreiben Sie diesen Code um, indem Sie die Klasse direkt an Ort und Stelle aufrufen.