множественные -> одного объекта

Simplichio

Новичок
я не опытен в ооп на пхп, видимо поэтому у меня возник вопрос:
что означает запись такого вида: - откуда ведут стрелки и где описание такого синтаксиса?

$view = View::factory('welcome')
->set('name', 'Васька')
->set('age', 25);

Зарание, спасибо тем, кто ответил
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
стрелки ведут от сущности создаваемого через фабрику класса. То есть от того, чем является welcome. Описания синтаксиса в секции ООП в мануале.
 

Simplichio

Новичок
Привильно ли я понял, что это эквивалентно:
$view = View::factory('welcome')
$view->set('name', 'Васька')
$view->set('age', 25);
?
 

cDLEON

Онанист РНРСlub
Нет. Это эквивалентно
$view = View::factory('welcome')->set(..)->set(...)
Где каждая из функций, по желанию программиста, может вернуть любой объект.
В конкретном случае каждая из функций возвращает $view
 

MiksIr

miksir@home:~$
Это зависит от того, что возвращает set. Т.е. в данном примере это правильно, но все же смысл в том, что второй set вызывается у объекта, который вернул первый set через return. В данном случае он вернул себя же, так что такое упрощение верно. Но может быть такой вариант
Foo::instance()->getBar()->run().
Тут Foo::instance() вернет объект Foo, у которого будет метод getBar(), который вернет объект Bar, и у него уже вызывается run().
Т.е.
$foo = Foo::instance();
$bar = $foo->getBar();
$baz = $bar->run();
 
  • Like
Реакции: AmdY

AmdY

Пью пиво
Команда форума
MiksIr прав, если там делается return $this, то эквивалентно. На некоторых проектах кодестайл запрешает использовать цепочки, это гемор при отладке.
 

fixxxer

К.О.
Партнер клуба
MiksIr прав, если там делается return $this, то эквивалентно. На некоторых проектах кодестайл запрешает использовать цепочки, это гемор при отладке.
Да ну, гемор только если отлаживать var_dump-ом. Ну не 2001-й год же, есть xdebug.
 
Сверху