PHP |
class MyClass { private $var = 'Hello'; public function methodOne() { $this->var = 'Hello one'; echo $this->var; return $this; }
public function methodTwo() { $this->var = 'Hello two'; echo $this->var; return $this; } } |
вот здесь можно будет вызвать
PHP |
$obj = new MyClass(); $obj->methodOne()->methodTwo(); |
и эффект будет тот же, что от
PHP |
$obj = new MyClass(); $obj->methodOne(); $obj->methodTwo(); |
но это только лишь потому, что methodOne возвращает сам объект.
В общем случае, обращение по -> делается к методу или свойству объекта. И метод может возвращать любой объект (не только $this, но и совершенно другой). как здесь:
PHP |
class MyClass { private $var = 'Hello'; private $another = null; public function methodOne() { $this->var = 'Hello one'; echo $this->var; if ($this->another === null) { $this->another = new MyAnotherClass(); } return $this->another; }
public function methodTwo() { $this->var = 'Hello two'; echo $this->var; return $this; } }
class MyAnotherClass { private $var = 'Another Hello'; public function methodTwo() { echo $this->var; } } |
запусти с выше указанными классами то, что указано выше, и ты увидишь различия