Metodes izsaukšūtūs pēc objekta izveides OOP PHP
Pieņemsim, ka mums ir klase Arr, kura
glabā sevī skaitļu masīvu un var aprēķināt
šo skaitļu summu, izmantojot metodi getSum.
Pati skaitļi nonāk masīva veidā objekta konstruktorā,
kā arī var tikt pievienoti pa vienam,
izmantojot metodi 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);
}
}
?>
Šeit ir klases Arr izmantošanas piemērs:
<?php
$arr = new Arr([1, 2, 3]);
$arr->add(4);
$arr->add(5);
echo $arr->getSum(); // izvadīs 15
?>
Var gadīties, ka visus nepieciešamos skaitļus mēs padodam objektu izveides brīdī un tad uzreiz vēlamies atrast to summu:
<?php
$arr = new Arr([1, 2, 3]);
echo $arr->getSum(); // izvadīs 6
?>
Ja mēs vairāk neplānojam veikt nekādas
manipulācijas ar objektu, tad augstāk minēto kodu var
pārrakstīt īsāk: var izveidot objektu un
uzreiz izsaukt tā metodi getSum:
<?php
echo (new Arr([1, 2, 3]))->getSum(); // izvadīs 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);
}
}
?>
Pieņemsim, ka ar šo klasi strādāja sekojoši:
<?php
$str = new Str('aaa');
$str->append('bbb');
$str->append('ccc');
echo $str->getLength();
?>
Pārrakstiet šo kodu, izmantojot klases izsaukšūtūs uz vietas.