Какие фреймворки вы бы предложили для мощной расширяемой платформы разработки?

Во-первых, позвольте мне извиниться за еще один рамочный вопрос. Но я думаю, что это достаточно отличается от обычного «Какой фреймворк мне выбрать?» чтобы гарантировать это.

Вот моя ситуация: в течение прошлого года я использовал пользовательский фреймворк. Он использовался во всем, от небольших CMS до крупных сайтов и даже в социальных сетях среднего размера. Он отлично работал, но теперь я вижу его ограничения. Итак, я решил перейти на сторонний фреймворк. Насколько я слышал, более простые фреймворки (CI, Kohana, Cake) кажутся слишком негибкими — так что это привело меня к ZF. Но я также слышал, что ZF может быть слишком гибким, и поэтому с ним трудно работать. Что еще больше усложняет ситуацию, так это то, что я ищу универсальное решение; Мне нужна установка, которая работает как с небольшими проектами, так и с очень большими проектами. Я главный разработчик, но мне нужен мой партнер, чтобы со временем изучить систему и помочь с менее сложными задачами программирования.

Я изучил Doctrine, и мне это нравится. Поэтому я склоняюсь к Symfony (с Doctrine) в качестве основного фреймворка с ZF, чтобы заполнить пробелы. Кроме того, мне нужна возможность добавлять свои собственные части на эту платформу параллельно с любыми сторонними библиотеками. Я надеюсь, что это даст мне надежную, расширяемую платформу, поскольку мы действительно не можем позволить себе менять фреймворки каждые несколько проектов.

Я ищу совета у тех, кто был в той же ситуации, что и я сейчас. Мы будем очень признательны за любые советы.

Редактировать: я разместил свое решение ниже в надежде помочь другим людям в такой же ситуации


person Steven Mercatante    schedule 13.10.2009    source источник
comment
Я думаю, что ваш подход звучит вполне нормально. Однако вы также можете использовать ZF с Doctrine, поэтому, если Symfony создан только из-за Doctrine, вы также можете выбрать более простые в обслуживании решения с одной платформой.   -  person markus    schedule 15.10.2009
comment
добавил некоторые вещи, как показано ниже. Например, мое окончательное решение и некоторые советы.   -  person Julius F    schedule 15.10.2009
comment
эй, оружие, ты уже принял решение о своей команде и фреймворках, которые ты будешь использовать или возьмешь (Sympho и так далее?).   -  person Julius F    schedule 20.10.2009
comment
Привет, daemonfire300, спасибо, что напомнили мне об этом вопросе :) Я разместил свой ответ ниже.   -  person Steven Mercatante    schedule 20.10.2009
comment
@Arms, я прокомментировал твой пост ниже.   -  person Julius F    schedule 21.10.2009
comment
Для тех, кто задается вопросом, какой фреймворк выбрать, прочитайте и посмотрите дядя Боб: stackoverflow.com/a/18853233/1614973   -  person Dmitri Zaitsev    schedule 30.09.2013


Ответы (6)


После некоторых исследований я решил пойти с Symfony. Вот мои причины:

  • Менее подробный, чем ZF
  • Кажется очень настраиваемым из-за использования файлов YAML (но я никогда не чувствую себя перегруженным ими)
  • Автозагрузка пользовательских классов не требует дополнительной работы, как в ZF (хотя в ZF это несложно настроить)
  • Панель инструментов разработчика великолепна, и в версии 1.3 к ней добавлено несколько полезных функций.
  • Возможность использовать фрагменты из других фреймворков (ZF, eZComponents) дает мне уверенность в том, что у меня не возникнет проблем с поиском того, что мне нужно.
  • Поставляется в комплекте с Doctrine и очень прост в настройке (фактически Doctrine станет ORM по умолчанию в версии 1.3).
  • Кажется, что для Symfony существует гораздо большее сообщество. Погуглите «учебники по symfony» и «учебники по zend framework», и вы увидите огромную разницу в количестве результатов.
  • Plenty of documentation: tutorials (the Jobeet tutorial so far is very good), API references, and a more human readable description of the framework and its underlying principles
  • Yahoo! has used it for a few of their own projects - it's nice to see a Big Name back a framework IMHO

Редактировать: Ради надежды помочь другим в той же ситуации, вот некоторые вещи, которые мне не нравятся в Symfony:

  • Does not follow the PEAR naming scheme (ZF does)
  • Internal classes begin with "sf". This is contrary to the practice of capitalizing the first letter of the class name
  • Переменные и функции написаны _подобно_этому, а вот методы класса в верблюжьем казусе - мне это кажется коряво

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

ZF, безусловно, хороший фреймворк, но я считаю, что использование Symfony в качестве основного фреймворка и расширение его частями ZF — лучший выбор для меня и моей команды.

Изменить

Прошло 2 года с тех пор, как я впервые опубликовал это, и, поскольку он все еще получает хиты, я решил дать быстрое обновление. За последние 2 года я создал около 25-30 проектов с использованием symfony 1.x, и я очень доволен тем, как он работает. В качестве полнофункционального фреймворка MVC, работающего в партнерстве с Doctrine, он обрабатывал почти все, что я ему предлагал. И с чем бы он не мог справиться, было легко добавить свой собственный код. На самом деле, это то, что я больше всего люблю в symfony — то, насколько легко его расширять. В итоге я создал кучу плагинов и вариантов поведения Doctrine, которые значительно сократили время разработки. И инструменты генератора администратора были Божьим даром. Я все еще использую symfony 1.4 для нескольких проектов здесь и там, но решил в основном сосредоточиться на использовании Symfony2. Это совершенно другой зверь, чем Symfony 1, но я действительно ценю его архитектуру. Что еще более важно, кажется, что его даже проще расширить, чем Symfony 1.x. Мне не хватает некоторых функций 1.x, но это та жертва, которую вы должны принести при смене фреймворка.

person Steven Mercatante    schedule 20.10.2009
comment
* правильно, загружать пользовательские классы в ZF так же просто, как носить штаны, вам просто нужно поместить их в автозагрузчик;) * ZF также позволяет вам использовать другие предметы столько, сколько вы хотите;) * Суть, о которой вы говорите tuts прав, но Zend - это корпоративная среда * По некоторым причинам документы ZF немного дрянные, верно;) * ZF используется IBM, betwin и т. д. и т. д. Приятно слышать, что вы наконец нашли структуру, которая вам нравится работать с. ;) - person Julius F; 21.10.2009
comment
Справедливости ради следует отметить, что имена функций с подчеркиванием в Symfony используются только для хелперов; какие функции вы можете вызывать из своих шаблонов представлений. - person ; 06.12.2009

Мне нравится использовать ZF из-за строгих соглашений. Вы можете быть уверены, что все будет именно так, как вы ожидаете. Имена классов, имена функций, имена переменных, структура каталогов, ... все это. Это действительно ускоряет разработку, если вы придерживаетесь этого. Если вы адаптируете его, это больше похоже на просмотр вашего собственного кода при проверке внутренностей ZF;)

Будем честны. ЗФ не быстрый. Не так быстро, как Nette, CodeIgniter и т. д. Но разница в том, что для всего есть свой класс. А если нет, есть класс, который вы можете расширить, или интерфейс, который вы можете реализовать.

Все остальные фреймворки пытаются добиться эффекта «вау» (блог за 30 секунд, твиттер за 2 часа и т. д.). Но при разработке реального приложения вы понимаете, что вам нужно использовать по желанию, гибкую и обширную архитектуру.

person Tomáš Fejfar    schedule 20.10.2009

Zend Framework: огромный, гибкий, модульный. Я бы использовал только в том случае, если я создаю большую ультрасистему предприятия.

Но я использую Yii Framework, и мне это нравится. Потому что: очень быстро, просто, виджеты (компонент легко переиспользовать, это очень приятно).

Yii проще в использовании, потому что это не корпоративная среда, и у него есть все базовые функции, которые вам действительно нужны в большинстве случаев.

person Ismael    schedule 15.10.2009
comment
ZF не обязательно должен быть огромным, поскольку он модульный! Если вы хотите построить крупную корпоративную систему, вам вообще не следует использовать PHP. ZF отлично подходит и для небольших проектов! каждый размер проекта в порядке. - person markus; 15.10.2009
comment
Я сделал небольшой проект, и это слишком много работы. Теперь это возможно... Используйте Yii для небольшого проекта, и вы увидите скорость разработки. Оба фреймворка отличные. - person Ismael; 15.10.2009
comment
Если вы знаете, как использовать ZF, это совсем несложно! Вот для чего нужны Zend_Tool_Project и Zend_Application. - person markus; 15.10.2009

*

РЕДАКТИРОВАТЬ: теперь, когда я почти понимаю, КАК улучшить ZendFramework, используя свой собственный код (как задано здесь Добавление сторонней библиотеки в Zend и здесь Использование сторонней библиотеки в Zend), я снова переключился на ZendFramework. В настоящее время я разрабатываю свое приложение, и каждый день, когда я работаю и тестирую что-либо с помощью ZendFramework, оно становится все более и более знакомым и легко ускоряет мою разработку. Мой совет: используйте ZendFramework.

*

У меня сейчас такая же проблема:

Моя история: я использовал CakePHP, пока не захотел увеличить размер своего проекта. CakePHP оказался не таким гибким, как мне хотелось бы. Поэтому я попытался использовать ZendFramework.

В самый первый раз, когда я читал руководство «QuickStart», я немного боялся иметь так много файлов для простого приложения гостевой книги.

Поиграв некоторое время с ZendFramework, я решил использовать ZF в качестве сторонней библиотеки в своем собственном фреймворке.

Проблема в том, что ЕСЛИ вы используете компоненты Zend MVC, вы можете быть вынуждены использовать 30% всей инфраструктуры, потому что компоненты MVC являются одной из самых больших частей ZF. Я имею в виду, если я использую такую ​​большую часть фреймворка, ПОЧЕМУ вы не должны использовать и остальные?

После этого я решил написать свой ПОЛНЫЙ пользовательский фреймворк без использования ZendFramework в качестве сторонней библиотеки.

Теперь я сижу перед горами бумаг, полных набросков о дизайне кода.

Я буду держать вас в курсе моих дальнейших решений.

person Julius F    schedule 13.10.2009
comment
+1 за редактирование. Приятно видеть, что ты заставляешь это работать на себя. - person Steven Mercatante; 15.10.2009
comment
Поскольку эти ссылки вернулись на SO, я удалил их из bit.ly и отредактировал, чтобы показать настоящие ссылки. Тогда гораздо проще доверять тому, что вы получаете, когда нажимаете на них. - person Verbeia; 04.10.2011
comment
2 года Zend, я все еще доволен, кроме поддержки Namespace. В настоящее время работаю с Symfony 1.4 на работе, я не очень доволен Symfony 1.4. - person Julius F; 10.10.2011
comment
Я думаю, что писать собственный фреймворк — очень плохая идея. Не говоря уже о том, что у вас, вероятно, не так много вариантов использования и опыта, как у разработчиков ядра ZF и сообщества вместе взятых, вы останетесь с устаревшим кодом, который НИКТО, кроме вас, не сможет прочитать. Вам также нужно будет обучать своей структуре каждого нового разработчика, с которым вы будете работать. Это контрастирует с любым известным фреймворком, у которого есть сообщество, использующее его и знающее внутренности фреймворка. - person Tomáš Fejfar; 28.05.2012

Я искренне думаю, что это действительно зависит от вашего стиля. Нет конца всем ответам на этот вопрос.

ZF в значительной степени опирается на классические и проверенные принципы проектирования. Он также очень расширяемый, но требует больше «настройки», чем «соглашения». Лично я по своей природе не доверяю стороннему коду, поэтому я предпочитаю многословие, чтобы лучше познакомиться с технологией, с которой работаю. Но это только я.

Я также успешно использовал CakePHP и два других фреймворка, принадлежащих компании, в которой я работал с большим успехом. Все они пытаются делать похожие вещи, просто выберите то, что вам больше нравится.

person rr.    schedule 20.10.2009

Я лично успешно использовал CakePHP как для больших, так и для малых проектов, однако часто бывает трудно заставить его двигаться так, как вы хотите. Мои причины использования Cake по-прежнему заключаются в том факте, что поддержка сообщества находится на высшем уровне, часто выходят обновления безопасности, и они не навязывают вам метапакеты (например, модульное тестирование) (хотя это входит в комплект, вы можете просто bin, если вы не заинтересованы в использовании встроенного пакета).

В целом, за последние несколько месяцев она стала для меня хорошей системой, однако я снова и снова слышал, что Symphony фантастична, так что, возможно, ваши первые мысли будут на деньги. Поскольку поддержка NetBeans для Symphony находится в процессе разработки, мне тоже может понадобиться переключиться в ближайшее время.

person Nathan Kleyn    schedule 20.10.2009