Стиль программирования PHP (Zend)

scorpion-ds

Новичок
Стиль программирования PHP (Zend)

Народ, сразу прошу прощения за глупый вопрос, но несмотря но мой более чем 3-х летний опыт программирования, столкнулся с проблемой синтаксиса PHP, когда увидел такой код:

PHP:
$window = new PhpExt_Window();  $window->setTitle("Resize Me")         ->setWidth(500)         ->setHeight(300)         ->setMinWidth(300)         ->setMinHeight(200)         ->setLayout(new PhpExt_Layout_FitLayout())         ->setPlain(true)         ->setBodyStyle("padding:5px")         ->setButtonAlign(PhpExt_Ext::HALIGN_CENTER);  $window->addButton(PhpExt_Button::createTextButton("Send"));  $window->addButton(PhpExt_Button::createTextButton("Cancel"));  $window->addItem($form);
Хоть убейте не могу понять как обеспечивается такое наследование, ведь все методы которые тут вызываются наследуются от объекта $window, а визуально как будто друг от друга.
 

Вурдалак

Продвинутый новичок
Каждый из этих методов возвращает объект.
PHP:
public function setTitle($title) {
    // ...

    return $this;
}
 

ssv

Новичок
за 3 года программирования можно понять, что нужно заглянуть в вызываемый метод и посмотреть что он возвращает.

Вурдалак, тебе все правильно написал
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Дополню что называется это все method chaining, если мне память не изменяет
 

Adelf

Administrator
Команда форума
Fluent interface это называется

-~{}~ 29.07.10 22:40:

method chaining - это одно из развитий идеи. Но с данным случаем не совпадает.
 

scorpion-ds

Новичок
Спасибо, все оказалось очень просто, ssv я исходники смотрел, но увидел только "фигу", сам не пойму как этого не понял, наверно сказалась жара в офисе ...

Я недавно занялся изучением zend framework, вот там и заметил это (хотя пример кода из PHP-Ext), до этого использовал только "традиционный" PHP с ООП, а сам fluent interface мне кажется довольно удобным для случаев когда "объекты собираются".
 
Сверху