По производственным нуждам приходится разбираться с достаточно популярным фреймворком Symfony.
Но это же – пиздец, товарищи!
Несмотря на некоторые приятные плюшки, фреймворк так и блещет извращенными представлениями об ООП его разработчиков. Чего только стоит передача параметров из контроллера в представление.
Если в ZF все логично: мы в контроллере наполняем экземпляр представления переменными:
class SomeController extends Zend_Controller_Action { public function indexAction() { $this->view->some_view_variable = 'test'; // вот тут мы наполняем экземпляр представления переменной } }
…а потом в представлении манипулируем его (представления) переменными:
< ?= $this->some_view_variable ?> < ?php /* тут $this ссылается на объект представления из предыдущего пункта */ ?>
То в симфони происходят очень тсранные с точки зрения логики вещи. В контроллере мы наполняем КОНТРОЛЛЕР свойствами с данными:
class defaultActions extends sfActions { public function executeIndex( sfWebRequest $request ) { $this->some_view_variable = 'test'; // some_view_variable является свойством КОНТРОЛЕРА , а не ПРЕДСТАВЛЕНИЯ } }
…так потом еще и в представлении обращаемся к сферическим коням в вакууме:
< ?= $some_view_variable ?> < ?php /* вообще сложно представить откуда могла появиться эта переменная. Возможно она вообще глобальная. Но очевидно одно - к объекту представления она никакого отношения не имеет */ ?>
Вот такое мое первое знакомство с Symfony. Первый час, так сказать…
это ты еще не видел их хелперов, там ООП и близко нету))
К сожалению уже видел… Уже много чего я у него увидел :’(
А я вот в связи с производственной необходимостью плююсь на cakephp. Там вообще обратная совместимость с php4. Ненависть!!!!111
ООП в симфони 1.x не ахти, но в ее пользу приведу три +++
- генератор админки
- все компоненты фреймворка нацелены на автоматизацию и быстроту разработки
- symfony 2 обещает стать сказкой :)
Попробую посопротивляться :)
- часто админка в таком виде, как она генерируется фреймворками не особо то и нужна. Прямое редактирование моделей (CRUD) не самая часто используемая задача в нетривиальных проектах.
- возможно. Но тут как говориться «на вкус и цвет». Тем-более что все компоненты очень связаны, а значит фреймворк менее гибок для кастомизации
- все в новых версиях обычно обещают быть сказкой :)
Работал почти 2 года с Zend Framework. Сейчас тоже перешел на Symfony по работе. Не так уж все и плохо. Очень похоже на Django.
Единственное – скудные доки и не совместимости с предыдущими версиями.