Meetodi väljakutse kohe pärast objekti loomist OOP-s PHP-s
Olgu meil klass Arr, mis
salvestab endas numbrite massiivi ja suudab arvutada
nende numbrite summat meetodi getSum abil.
Numbrid ise tulevad massiivina objekti konstruktorisse
ja neid saab lisada ükshaaval
meetodi add abil:
<?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);
}
}
?>
Siin on näide klassi Arr kasutamisest:
<?php
$arr = new Arr([1, 2, 3]);
$arr->add(4);
$arr->add(5);
echo $arr->getSum(); // väljastab 15
?>
Võib juhtuda, et kõik vajalikud numbrid antakse edasi objekti loomise hetkel ja seejärel tahetakse kohe leida nende summa:
<?php
$arr = new Arr([1, 2, 3]);
echo $arr->getSum(); // väljastab 6
?>
Kui me ei kavatse enam objektil mingite
manipulatsioone teha, siis võib ülaltoodud koodi
kirjutada lühemalt: saab luua objekti ja
kohe kutsuda selle meetodit getSum:
<?php
echo (new Arr([1, 2, 3]))->getSum(); // väljastab 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);
}
}
?>
Oletame, et selle klassiga töötati järgmiselt:
<?php
$str = new Str('aaa');
$str->append('bbb');
$str->append('ccc');
echo $str->getLength();
?>
Kirjutage see kood ümber klassi väljakutsega kohapeal.