Всем привет! После года изобретания велосипеда (написания собственного фреймворка) всё же хочу пересесть на то, что уже есть. Пока смотрю на популярные вещи: Symfony и Zend Framework. Выбор этот очень и очень сложный, так как я понимаю, что на изучение того или иного фреймворка потребуется много времени и ещё больше предстоит с ним работать в перспективе. Я итак убил кучу времени на написание того, что давно сделали за меня гораздо проще и лучше, по этому скакать с фреймворка на фреймовк очень не хочется. По этому критерии для выбора очевидные – мощный первоначальный функционал и большие перспективы.
Скажу сразу, что ни с симфонией ни с ZF не работал. Изучал плюсы и минусы исключительно методом гугления. И вот какие выводы я сделал лично для себя, полагаясь на свои требования:
Symfony. Плюсы:
- Полноценная MVC
- ORM Doctrine и плагин DBFinder – по-моему, о лучшем и мечтать нельзя.
- CRUD и возможность генерировать 99% бэкэнда (да и фронтэнда) обычными yml-файлами. Пожалуй, это самый главный и жирнейший плюс, без которого будет очень и очень тяжко. В силу специфики деятельности, приходится писать разные админки с кучей различной степени сложности связей, таблиц, форм и т.п. И всё это отнимает очень много времени – рисование всех этих мультиселектов, чекбоксов, получение и передача данных во View. Особенно весело с many-to-many связями. аплоад файлов, древовидные структуры, меню, подменю, ACL ко всему этому… С генератором же эта проблема полностью решается за счёт написания конфигов в несколько строк.
- Делая выводы – rock solid, rapid & agile.
Symfony. Минусы:
- Динамика развития очень удручает. 95% всего как было написано несколько лет назад, так остаётся и по сей день. А с уходом главного идейного вдохновителя перспективы фреймворка вообще очень туманны. Щас всё подвешено на одном человеке, который тоже может взять и свалить и вместо симфонии получится какофония …
- Непонятные плагины. Как я понял, всё что неофициально – сырое и конфликтует друг с другом. Хотя, вкусных плагинов на первый взгляд очень много.
- Баги и недоработки, которыми пугают многие. Которые не спешат фиксить в связи с плохой скоростью развития.
- Можно сказать самый медленный из всех PHP-фреймворков.
Zend Framework. Плюсы:
- От разработчиков PHP А это, что называется, "на года"! Выкатили на рынок всё и сразу, как снег на голову, мгновенно взяв планку самого навороченного фреймворка.
- Есть куча нужных и удобных компонентов, работа с формами очень логичная и удобная.
- Все компоненты можно использовать действительно как отдельные, независимые друг от друга утилиты.
- Zend_View на первый взгляд даёт огромное количество хелперов на все случаи жизни. Но это лишь утишение в связи с отсутствием генератора, который должен сам делать всё это.
- Вроде бы минимум багов, максимум ООП и грамотного оттещенного кода, который проходит через Core Team.
- Множество комьюнити и, вообще, ZF стал сразу же самым популярным и динамически развивающимся из PHP-фреймворков.
Zend Framework. Минусы:
- Нет ORM, нет генераторов. По сути, это просто убивает всё желание заниматься им, т.к. придётся писать всё руками, рисовать шаблоны и т.п. Нашёл, как можно присобачить Doctrine, но это уже не будет solid-фреймворком, т.к. это даже не плагин и и официально он не поддерживается.
- В proposals люди просили сделать и то и то и много чего полезного ещё год назад, но разработчики уделяют внимание всякой ненужной хрени типа Zend_Service_* В общем, позиция разрабов пока что не ясна до конца.
Так получилось, что плюсы симфонии – минусы зенда и наоборот.
Что скажете? Какие у вас были минусы в выбранных вами фреймворках и как вы их преодолели, пережили какие-то потери и за счёт каких плюсов всё же отдали предпочтение тому или иному фреймворку? Буду благодарен за конструктив.
6 мая 2009 в 22:02
Спасибо, щас продублирую.
В зенде щас Table Data Gateway паттерн – совершенно не то, что есть ORM. Конечно, если смотреть с другой стороны, то этот паттерн может показаться более низкоуровневым – это как си, когда ORM – это руби, а native SQL – ассемблер. Но мне с моим фреймворком пришлось придумывать и писать его с нуля, затем придумать ActiveRecord, т.к. он мне был необходим, после чего я уже узнал о том, что такое паттерн и о том, что я изобрёл велосипед. В общем, не суть. Доктрину можно цеплять и это хорошо.
С генератором там непонятно. Вроде есть простейший генератор, вернее даже tool – утилита, что хочешь с ней, то и делай, генерь что хочешь и как хочешь. Совершенно никаких рельс, по которым надо ехать. С одной стороны можно похвастаться и сказать, что я волен в своих делах, делаю что хочу и как хочу, с другой можно признать, что опять придётся изобретать велосипед или же ждать год, когда зенд догонит симфонию в том же генераторе.
Кстати, по поводу "через год". Кто мне может сказать по поводу их proposals – вот генератор уже вышел, а он всё ещё в New, т.е. в самой ранней стадии до рассмотрения. //framework.zend.com/wiki/display/ZFPROP/Zend_C...
Где можно увидеть примерную цепочку будущих апдейтов?
6 мая 2009 в 19:04
Максим, продублируйте свой вопрос на форуме
//zendframework.ru/forum/ – там вам все объяснят более подробно чем здесь.
Это кстати – еще один плюс ZF – у него уже есть развитое русскоязычное сообщество.
По поводу ваших перечисленных минусов ZF.
- Отсутствие генераторов. – В последней версии ZF 1.8 – появилась генерация Zend_Tool – дальше больше. Через годик по возможностям они обгонят Symfony.
- Отсутствие ORM. – Несколько некорректный минус. ORM там есть, и даже связи можно прописывать. Конечно не такой мощный как Doctrine, но он есть!
- По поводу Proposals. Сейчас модно все просить бесплатно. Тебе нужно – сделай, закомить свой компонент. В составе ZF присутствуют те компоненты, которые нужны чаще всего, и те компоненты которые продвигают сторонние разработчики.
Мой выбор – ZF. Плюсов больше чем минусов