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.