Pull to refresh

Comments 71

Год назад выбрал Zend Framework. Тогда причиной была «близость» команды разработчика фреймворка к команде разработчиков языка. Теперь же мне больше всего импонирует в ZF его гибкость, точнее компромисс между гибкостью и простотой разработки.
Минус пока вижу один — проблемы с производительностью без дополнительных «допилов».
Та же история с выбором. Zend Framework — мощный, гибкий, немного неповоротливый, но это поправимо. Правда сейчас работаю на Ruby on Rails. Последний кст лучше всех выше перечисленных :)
Тут как бы фреймворки для PHP обсуждают… Я согласен, что для других языков программирования могут (!) быть более интересные и мощные фреймворки. Именно поэтому я для себя решил в PHP дальше ZF не двигаться, а, при появлении свободного времени, заняться изучением Python.
Смысл предыдущего комментария в том, что Zend один наилучших вариантов среди вышеперечисленных. Да Kohana быстрее ZF. Yii еще быстрее Kohan'ы. Но чаще всего выгоднее нарастить вычислительную мощь, чем доводить более быстрые framework's до нужного функционала.

Но использовать ZF для простого приложения вроде блога или представительского сайта, не имеет особого смысла. Для данного случая я бы выбрал Kohana.
Я сделал мини-тест на старом ноутбуке ZF vs CodeIgniter vs PHP Clean: Hello World. Да, я понимаю, что кустарно, но все же то, что они могут держать 40/260/>5000 запросов за 30 секунд и расход памяти 2.3/0.8/0.08 мегабайт уже что-то говорит. Zend серьезно понижает производительность.
Поправимо — это как? Очень классный функционал, сдерживает производительность. Расскажи, пожалуйста…
Люди выбравшие ZF очень много делают на этот счет. По сути если следовать правилу: дешевле нарастить производительную мощность нежели вкладывать силы в разработку чего то уже изобретенного и оптимизации, то париться вообще не стоит. На обычном виртуальном хостинге все работает более ли менее шустро. До в сравнении с другими проектами.

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

Я бы порекомендовал поглубже изучить возможность ZF и все что не требуется отключить. Потом настроить кэширование как выдачи так и запросов. После с оптимизатором на сервере наперевес сказать: да, это круто :)
использую CodeIgniter.
Главные преимущества это удобство разработки и достаточно большая аудитроия его использующая. НА оф. форуме очень большая база знаний.
Ну и собственные наработки, меньше желания смотреть на чтото еще.
Это правда, что там нет шаблонов по умолчанию? И что в каждом акшне надо указывать где лежит вью.
Да, это так. Но мне не составило труда написать небольшую библиотеку, которая справляется со всеми поставленными мною задачами
Можно еще «django» попробовать
Возможно после уже не захочется обсуждать «пхп фреймворки» никогда =)
Кстати, очень многие советую Django.
Но никак не могу себя перебороть и засесть за python.
Хотите Доктрину и Пропел? Symfony будет отличным выбором.
Плюс у Symfony прекрасная документация… и комьюнити очень и очень…
Зато сколько геморроя поимеете, если проблема не описана…
Я например нашел только в одном из блогов, на какой-то мохнатой странице гугла как сделать динамический роутинг (подключение сгенерированных роутов к общей карте).
почему не посмотреть в коде фреймворка?
это обычно решает порблемы…
благо он открыт :)
ага. то есть я вот только 2 недели сижу в симфони и я уже должен понимать мне стоит посмотреть в коде как реализуется система eventов, чтобы научиться подключать к ней события? и то, что именно это мне поможет решить задачу.

да и если дедлайн был вчера — не до копаний в чужом, пусть и хорошем коде. нужна хорошая, понятная документация.

вот заюзал я in_place_editor. и нигде не мог найти всех доступных опций с их описанием, кроме как на каком-то блоге.
это проблема любого фреймворка и тупых мозгов.
а вы сами пробовали? у меня логов уже нету, но суть в том, что выбор роута происходит ДО того, как подключается сгенеренный. По крайней мере у меня. Поэтому пришлось подключать генерацию роутов с помощью евентов в момент их загрузки из routing.yml.
я не пробывал, а если бы и пробывал, делал бы это в фильтрах
все равно, суть в том, что проблема нетривиальна и без опыта работы с фреймворком представляет собой большую проблему.
Всячески поддерживаю.

Правда, говорят, есть ещё нечто Akelos, как порт RoR под php, но вот его я ещё не щупал.
Прочитал комментарии и задался вопросом: а CakePHP уже недостоин внимания сообщества? Я пишу на нем уже в общей сложности 2 года и доволен…
я на нем окола года пишу.
он имеет свои проблемы с производительностю. правда решаються путем оптимизации ядра и подключаемых файлов. и кеширования.
из огромнейшых плюсов — кодогенератор. и то — передаланый и доработаный))) если написать такой и для других фреймворков под свои нужды — можно ускорить написание каркаса будущего проекта.
Сам был пред такм выбором совсем недавно. Выбрал Кохану.

Zend Framework мне показался тяжел для изучения. Даже для старта приложения код нужно самому писать. В Кохане начиинаешь с написания контроллеров и моделей.

Yii framework вообще сырой показался.

У Коханы же есть плюсы, которые мне показались очень полезными:
Очень красивые модули, с помошьью них получается переносимый код.
Действительно грамотное использование php5 (зенд тут тоже на высоте).
Ну и сейчас я разбираюсь с кохановской ORM, хорошая вешь, все настраивается, запросы модифицируются, можно как отложенно объекты загружать, так и предзапросы на связанные объекты делать.

Главный минус коханы пока в том, что базовые библиотеки меняются в каждой версии. В 2.4 будет переделана интернационализация. А в 3.0 вообще будут коренные изменения в правилах именования классов и расположения файлов, так что какой-то действительно большой проект перетянуть с 2.х на 3.0 будет очень сложно. Надеюсь к версии 3.0 фреймворк полностью обретет форму и таких глобальных изменений не будет.
спасибо за развернутый ответ
Да, тоже надеюсь на «трешку» как на достаточно долгосрочный фундамент, пока что приходится использовать 2.3.1 скорее как платформу для изучения существующих возможностей и общей философии фреймворка.
Что мне нравится — подтянули документацию, хорошо работает оф.форум и регулярно появляются полезные модули (как оригинальные, так и портированные из других фреймворков, например Acl с того же Zend).
В общем, как только революционные идеи закончатся, можно будет и очень серьезные вещи задумывать :)
не могу говорить за другие фреймворки, сам использую симфони вот уже больше месяца. мне очень нравится. это как наркотик, местами тяжело и хочется бросить, но не можешь. уж больно удобный там админ генератор, хелперы… да и вообще приятный фреймворк. ну а пропел… ну если надо сделать что-то большее, чем пару селектов — пропел тут не помощник
Полтора года работаю с ZF и доволен. Очень гибкий и расширяемый фреймворк. Грамотно продуманная архитектура и красивый код, для себя извлек много полезностей изучая исходники. Хорошая расширяемость.
Из минусов нужно отметить, что ZF по производительности довольно сильно проигрывает другим аналогам, что в свою очередь породило много холиваров, но, как по мне, за гибкость нужно платить… ИМХО ZF подходит для проектов с средней посещаемостью (скажем 500к хостов в сутки). Еще из плюсов стоит отметить, что ZF значительно сокращает время разработки тривиальных задач, а так-же сопровождается очень хорошей документацией, что в свою очередь хорошо сказывается на распространенность и знание фреймворка…
Думаю тут дело в навыках. Главное не зацикливаться ТОЛЬКО на Фреймворке.
Порой, даже часто нужны свои навыки в РНР, Javascript(Да-Да!).
Вот если набить руку, то тогда уже будет неважно, какой выбирать.

О себе:
Полтора года на CakePHP.
Делал на нем(1.1) проект, и заодно изучал его.
год ждал официального выпуска 1.2, пока ждал, вырабатывал навыки.
Те самые навыки, о которых я говорил, нестандартное мышление в разных ситуациях(сравнив с теми решениями которые предлагает Фреймворк).
Очень долго не мог выбрать, прбовал Zend Framework, Symfony, CakePHP, Adept, Limb, пока остановился на Yii.

Zend Framework — очень гибкий, но при этом тяжеловесный. ZF это только основа, многие вещи приходится дописывать самому. Но это можно считать и плюсом, фреймворк не ограничивает свободу разработчика.

Symfony — фреймворк содержит множесто удобных средств, облегчающих рутинные операции. Отличная документация, множество готовых решений (плагинов), гибкая конфигурация. Не выбрал этот фреймворк в качестве основного, так как люблю все допиливать под себя, с этим возникли определенные трудности.

CakePHP рассматривал поверхностно. Фреймворк достаточно легкий и судя по тестам, быстрый. Не понравился стильн написания кода (в том числе элементы PHP4). Что очень понравилось — эмуляция mb_string, дергаю ее в свои проекты.

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

Limb. Очень понравился ActiveRecord, компонентная модель, упрощение рутинных операций, к примеру:
$news = new News();
$news->import($this->request);
Думал остановится на этом фреймворке, но отталкнули правила наисания кода, слабое документирование кода, не очень понравилась структура пакетов, подключение классов. К плюсам также можно отнести отзывчивость разработчиков.

И наконец Yii. При первом знакомстве прошел мимо. Но фреймворк очень быстро развивается. Нравится структура фреймворка, код фреймворка очень легко читается. Также нравится расширяемость, на мой взгляд один из лучших вариантов наименования классов и их автозагрузка, хорошее документирование кода, высокая скорость работы, легкость, гибкость. В последней стабильной версии (1.0.3) появилось множество нововведений, без которых, возможно, я бы не остановил взгляд на этом фреймворке.

В заключение скажу, что мое мнение достаточно субъективно, там где я вижу минусы для кого-то будут плюсы. Некоторые моменты в фреймворках меня отталкивают несознательно, вполне может быть из-за того, что не достаточно разобрался в мелочах.
По поводу Limb'a — приведенный пример, это же тот же самый ActiveRecord, что есть в Кейке
Да, способ похожий, операцию с AR я привел только в качестве примера.
cakephp не есть легкий)))
За последние полтора года смотрел разные фреймворки, но ближе всего по духу мне оказался CodeIgniter.
Благодаря удобной и понятной документации CI прост в освоении.
Первый мой серьезный опыт работы с ним — написание собственного движка (статья о нем на Хабре), на что тогда ушло около пяти месяцев.
В процессе работы пришел к выводу, что CI обладает большим потенциалом, но использует его не в том русле. Поэтому, начиная с осени, принялся за создание нового движка, который в свою очередь является следующей ступенью эволюции CI. В основе, само собой, используется последняя версия CodeIgniter 1.7.1, но ее функционал и идеология претерпели значительные изменения.
Если звезды соблаговолят удачу, то в ближайшие два месяца вы увидите результат моих стараний.

Что касается остальных фремворков:
1. С одной стороны правильно, но с другой — некрасиво, когда все классы начинаются с ZF_(длинное имя класса). Понятное дело, что так принято, но в общем счете байткод становится длиннее. Мне нравится реализация именования классов в CI — без префиксов.
2. Когда фреймворк требует работы с Shell (Symphony,Yii) — хорошо тем, кто знает, но не имеющим опыта общения с шелом — плохо. К тому же получается, что фреймворк не чистой воды PHP.

Сам ORM Doctrine, Propel не пользовался, но интересовался — люди говорили, что по сравнения со стандартным ActiveRecords-классом CodeIgniter производительность падает вдвое. На мой взгляд проблема ORM в данном случае в том, что реальный функционал, который разработчик использует, подключая их к фреймворку, много меньше потенциала самих ORM. Таким образом ради локальных задач подключается целая громоздкая библиотека. На мой взгляд, модель MVC и придумана для того, чтобы в Model определять взаимодействие с базой, как вариант.

Выбирая фреймворк под себя, следует руководствоваться душевными позывами — комфортно ли вам, удобно и понятно работать с кандидатом? Если чувствуете, что фреймворк — ваш, то сомнения должны отпасть сами собой.
Свой выбор сделал давно, чему радуюсь с каждым днем все больше.
Работа с Shell это как дополнительная фича, в том же Yii можно вполне комфортно работать и без него. В Symfony правда без этого никуда, если юзать Propel.
в Cakephp тоже есть шелл. хотя пока ни разу и не использовал — руки не доходят :-)
в shell очень легко прводить кодогенерацию.
Надеюсь, в Вашей версии будут лайауты?
В моей версии используется набирающий обороты шаблонизатор Quicky, который полностью совместим с синтаксисом Smarty и Blitz, но работающей быстрее обоих (по тестам автора шаблонизатора).
Помимо этого, можно использовать Layouts как компонент, для вывода информации по шаблонам.
Впрочем, когда будет готов сайт продукта, документация будет содержать много интересных моментов.
Мы в основном работаем с Java и на каждый конкретный случай — свой вариант. Если будет много вёрстки — берём Wicket, у него шаблоный — чистый HTML без логики, нужен мощный AJAX — GWT. Хотя в последнее время всё больше пользуемся Flex:
— чумовые тулзы: FlexBuilder/IDEA, BlazeDS(для Zend тоже есть интеграция)
— популярность на рынке, возможность аутсорсить дизайн + front-end
— простота в изучении и никакого геммороя с совместимостью

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

Так что мой вам совет, посмотрите RIA — Flex, Silverlight ну ли JS-решения(Cappuccino).
UFO just landed and posted this here
Да, я вот тоже 1.5 года работал с CI. Теперь хочу перейти на ZF. Основные аргументы за — это, прежде всего, поддержка фреймфорка и то сколько у него всего внутри. Выбирая CodeIgniter приходится многие вещи писать заново — поддержку модулей, авторизацию, ACL, а все это уже есть в Zend. Основной аргумент против Zend — это производительность, хотя сами чуваки из Зенда говорят — что у ниж в приоритетах code base и только после perfomance. Прибавьте к этому интерфейсы к вебслужбам, и отличный маркетинг (наример поддержка со стороны adobe, microsoft), и команду Zend с их продуктами типа Zend Server и интеграцию в Zend IDE.

Могу сказать, что имея опыт работы с фреймворками и понимание основных концепций (как тут выше верно заметили) сменить фреймворк не та уж и сложно.
UFO just landed and posted this here
Да, бузесловно. Но это все-таки коммерческий продукт. Нельзя просто так «взять» из него компоненты. С таким же успехом можно использовать компоненты Zend в CI ))
UFO just landed and posted this here
Использую CodeIgniter, но постоянно посматриваю в сторону Зенд. У меня встречный вопрос. Какой фреймвор вы посоветуете для Hi-Load проектов, где уников будет около 500.000 в день а то и больше? Или нужно разрабатывать на php без применения фреймворков?
Я думаю что Зенд вполне подойдет. Не думаю что у вас получится ядро получше чем у них.
А что бы все было ок с производительностью — тут дело не столько в фреймворке, как в грамотном проектировании. Ну и кеш конечно, нужно кешировать все что только можно)
Не подскажите где можно найти или почитать про логику проектирование? Уж больно не хочется ошибиться, чтобы ценой ошибки был не работающий проект. Заранее спасибо.
Э. Гамма, Р. Хелм, Р. Джонсон, Дж. Влиссидес Приемы объектно-ориентированного проектирования. Паттерны проектирования

Мартин Фаулер Архитектура корпоративных программных приложений
Думаете справится Zend из коробки с такими нагрузками? (актуальный вопрос)
Думаю, что любой достойный фреймворк готов справиться с любыми нагрузками при должном проектировании и использовании кластера серверов :-)
К тому же 500.000 в таком написании больше похоже на правду — 500.
Хотя если взять отдельную машину с 32ГБ оперативной памяти и четыремя четырехядерными Xeon, то возможно она и справится.
Нужно знать, сколько оперативной памяти ест ZF под конткретную задачу для одного процесса (клиента). Если, например, это 10Мб, то 400 пользователей, одновременно бороздящие сайт (округлил среднее в минуту от 500000 хитов в день), потребуют почти 4Гб оперативной памяти и приличное количество процессорного времени (не считая накладных расходов на другие процессы).
При грамотной настройке сервера, возможности распределенных вычислений (кластера) и должном финансировании и ZF, и любой другой фреймворк выдержит любое необходимое количество посетителей.
Что-то вы не то посчитали. У меня при 10-и часовом дне получилось 14 запросов в секунду. Чтобы число одновременно выполняющихся запросов было 400 при таком потоку запросы должны выполняться по пол минуты.
Ну а 14 запросов в секунду, допустим четырехядерный процессор выдержит, если время генерации страницы будет 1000×4/14 = 285мс. Мне кажется, с кешированием на зенде вполне достижимая величина. Близкая к критичной, но вполне реальная.
Я «прикинул», что люди бывают на сайте 24 часа в сутки.
может, стоит обратить внимание на другие языки?
Какие? Я думаю о Ruby… Но проект нужно сделать за 3-4 месяца, при этом еще работая на основной работе.
если уж тяготеете к ruby, то имхо лучше grails.

а ruby, насколько я знаю, тот ещё тормоз.
Спасибо. Буду паралельно его изучать…
У меня есть вопрос к людям, знакомым с Doctrine Simphony или может быть с другимим системами, имеющими функцию scaffolding:

Правильно ли я понимаю, что scaffolding, это система построения административной части сайта, что-то по типу phpmyadmin? Или встречаются и более гибкие реализации, позволяющие использовать для разных полей и типов данных разные шаблоны, а следовательно и успешно применять их для пользовательского интерфейса?
cakephp и symphony генерируют ети scaffold-интерфейсы в код, который ви можете потом изменить под себя. в code ignitier есть code crafter — тот же кодогенератор, то, как мне показалось, не очень сильно и развит.
НЕ ТОЛЬКО административной. Просто в контексте Симфони скаффолдинг касается (пока? — некоторое время не возился с Симфони) только админки.

В целом скаффолдинг — это реализация через кодогенерцию, либо через «зашитые» в фреймворк методы, простейших операций (CRUD — create, retrieve, update, delete) с той или иной сущностью.
используем Symfony около года, использовать какой-то другой смысла не видим
На сегодняшний день выбрал kohana.
Свой текущий проект, который делал на ci (около 30% готовности) перевел на kohana. Все было без проблем, зато насколько стало удобней и вообще лучше. После этого переделал свою библиотеку видов для ci на kohana.
Пока что меня устаивает в kohana почти все. После небольшой пробы Yii беру из него некоторые идеи, которые мне понравились.
Не в обиду Zend`ерам, но все же это не фреймворк, а набор отличных, почти независимых библиотек. Все что нужно из него очень просто интегрируется в kohana.
Насчет symfony ничего говорить не буду, так как времени на его изучение(а порог вхождения, как я вижу, у него достаточно высокий) не было.
Всем спасибо за комменты!
Использую Codeigniter в плотной связке с ZF, благо все прикручивается просто на ура.
Sign up to leave a comment.

Articles