nazywa się to łączeniem metod i odbywa się poprzez zwrócenie referencji do klasy ( $this ) lub innego obiektu klasy z tych funkcji. Następnie możesz wywołać metodę na zwróconym obiekcie.
Oto prosty przykład.
class foo{
protected $_bar;
public function bar($value){
$this->_bar = $value;
return $this;
}
public function out(){
echo $this->_bar;
}
}
$a = new foo();
$a->bar('hello')->out();
wyjście:
'hello'
Aby wyjaśnić nieco więcej, powyższy kod $a->bar('hello')->out();
jest mniej więcej taki sam jak zrobienie tego:
$a = new foo();
$b = $a->bar('hello'); //$a and $b are the same instance of the object
$b->out();
Teraz, ponieważ bar()
zwraca $this
możemy przypisać go do $b
jak powyżej, a następnie wywołaj out()
. Ale $a
i $b
oba odwołują się do tego samego wystąpienia foo
obiekt, ponieważ zwróciliśmy $this
z bar()
. Nie ma więc potrzeby stosowania tej dodatkowej „fałszywej” zmiennej, ponieważ możemy po prostu odwołać się do zwracanego obiektu bezpośrednio przy następnym wywołaniu. Działa to z każdym obiektem zwracanym przez metodę (nie tylko $this), ale oczywiście następne wywołanie w łańcuchu dotyczy zwróconego obiektu.