Что это за синтаксис PHP?

Недавно я увидел несколько примеров кода PHP, которые выглядели следующим образом:

$myObj->propertyOne = 'Foo' ->propertyTwo = 'Bar' ->MethodA('blah'); 

В отличие от:

 $myObj->propertyOne = 'Foo'; $myObj->propertyTwo = 'Bar'; $myObj->MethodA('blah'); 

Это из определенной структуры или конкретной версии PHP, потому что я никогда не видел, чтобы она работала?

То, что вы видели, было fluent interface , однако ваш образец кода ошибочен. Чтобы сделать длинную историю коротким, fluent setter должен вернуть $this :

 class TestClass { private $something; private $somethingElse; public function setSomething($sth) { $this->something = $sth; return $this; } public function setSomethingElse($sth) { $this->somethingElse = $sth; return $this; } } 

Применение:

 $sth = new TestClass(); $sth->setSomething(1) ->setSomethingElse(2); 

Я не могу поверить, что это действительно сработает, как вы показали его с полуколонами после каждой строки, или для назначения свойств напрямую; вы, возможно, видели что-то вроде

 $myObj->setPropertyOne('Foo') ->setPropertyTwo('Bar') ->MethodA('blah'); 

который обычно называют fluent interface или method chaining , где каждый из методов возвращает экземпляр текущего объекта через return $this

Я взглянул на метод Chaining, о котором я никогда не слышал в PHP раньше. Очевидно, что мой пример – вздор.

Этот пост имеет смысл для меня:

PHP-метод цепочки?