Methode-aanroep direct na het maken van een object in OOP in PHP
Stel dat we een klasse Arr hebben die
een array van getallen opslaat en de som
van deze getallen kan berekenen met de methode getSum.
De getallen zelf worden als array doorgegeven aan de constructor
van het object, en kunnen ook een voor een worden toegevoegd
met de methode 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);
}
}
?>
Hier is een voorbeeld van het gebruik van de klasse Arr:
<?php
$arr = new Arr([1, 2, 3]);
$arr->add(4);
$arr->add(5);
echo $arr->getSum(); // toont 15
?>
Het kan zijn dat we alle benodigde getallen doorgeven op het moment van aanmaken van het object, en dan direct hun som willen vinden:
<?php
$arr = new Arr([1, 2, 3]);
echo $arr->getSum(); // toont 6
?>
Als we niet van plan zijn verdere
manipulaties met het object uit te voeren, dan kan de code hierboven
korter worden geschreven: we kunnen een object maken en
direct zijn methode getSum aanroepen:
<?php
echo (new Arr([1, 2, 3]))->getSum(); // toont 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);
}
}
?>
Stel dat er als volgt met deze klasse gewerkt is:
<?php
$str = new Str('aaa');
$str->append('bbb');
$str->append('ccc');
echo $str->getLength();
?>
Herschrijf deze code door de klasse direct op de plek aan te roepen.