Выбор фреймворка PHP

    Так уж исторически сложилось, что я веду веб разработку вне PHP (на
    rails) или с жесткой привязкой к фреймворку (Zend, Symfony). Но тут
    возникла ситуация — нужно создать небольшой сайт на PHP, и заказчик не
    предъявляет требований к выбору фреймворка.

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

    1) Zend Framework
    за: стабильность, отсутствие вопросов при передаче заказчику — zend
    лидер, полный охват функциональности.

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

    2) CodeIgniter (или лучше даже Kohana)
    за: схожесть с rails, хотя и неполная :), меньшие требования к памяти

    против: непонятно как у него со стабильностью, поддержкой

    3) Yii
    за: позиционируется как самый модный быстрый фреймворк

    против: нет опыта работы

    4) без фреймворка, использовать какую-нибудь ORM

    за: серверу будет легко.

    против: выбор ORM (на хабре есть топик) превращается в клон этого поста.

    Кто что думает?

    Update — сравнение пунктов 2-3
    http://www.beyondcoding.com/2009/03/02/choosing-a-php-framework-round-2-yii-vs-kohana-vs-codeigniter/

    Similar posts

    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 64

      +3
      всё у CI хорошо, и со стабильностью, и с поддержкой
        0
        Вот только обновляется он раз в несколько лет. :) И функционал у него детский по сравнению с другими фреймворками.
          0
          зато документация великолепная. изучать c нуля — одно удовольствие. а функционала для «сайта из нескольких страниц» за глаза хватит
        –1
        А готовые решения (CMS) не рассматривали? Наверняка задачи типичные. А то специально изучать фреймворк…
          0
          нет, мне нужен именно фреймворк, у CMS придется много отпиливать и переделывать
          +9
          Монетку брось.

          А в действительности у тебя в двух третях вопросов нет опыта вообще. Следовательно, даже если тебе скажу Yii, то придётся его учить. Тут два варианта. Либо ты удаляешь топик и на неделю уходишь учить всё вышеперечисленное, делая попеременно тесты; либо же тебе будет лень учить то, что ты не знаешь и сделаешь на том, что знаешь. Следовательно, вывод очевиден. Либо сам делаешь и тестируешь, если не лень, либо пишешь на том, что знаешь.
          Это тебе сводка из прошлых аналогичных топиков, которых тут было уже десятка два. Юзай поиск.
            +2
            если нет опыта, то лучше что нибудь простое
            Yii и Kohana вполне подойдут и с поддержкой и стабильностью у них все в порядке
              0
              С каких пор Yii стал простым? o_O
                0
                про Yii уже почитал документацию, в действительности он не очень сложный и если (я повторюсь) он самый модный :), то можно и его выбрать
                  0
                  Yii сложнее чем CI, но ненамного, а вот функционалом CI не блещет.
                    –1
                    Видимо у нас разные понятия о «ненамного» =))).
                    По поводу CI — не жалуюсь. Сделал уж много разных проектов на CI, проблем не возникало.

                    P.S.: ActiveRecord/ORM и т.д. — не использую, не нравится.
                    • UFO just landed and posted this here
                    0
                    Поддерживаю — сам пользую Кохану уже полгода, выбрал именно из-за MVC. Документация на сайте хотя и не полная, но достаточная. Плюс активный форум.
                      0
                      топик я написал как раз с той целью, чтобы послушать, чем кто пользуется… когда-то писал небольшой проект на CodeIgniter и думал о нем, а сегодня узнал, что на базе него создали Кохану и лучше использовать её
                        0
                        У Коханы чистый PHP5, в отличие от CI. Если на хостинге PHP4, Кохана не подойдёт.
                          0
                          Коханы сейчас тоже две: 2.х (похожая на CI) и 3.х (по моему мнению абсолютно другая). Сейчас сам перехожу с CI на KO3…
                  0
                  Писал(тестировал) на всех перечисленных framework`s, на некоторых по 3-4 проекта было сделано.
                  Но в итоге отдал предпочтение, около года назад, в пользу yii и ещё не разу не пожалел об этом.
                  Перечислят его плюсы по сравнению с другими, не вижу смысла, так как сравнений его с другими в инете можно найти валом.
                  Но как говорится: " на вкус и цвет....", так что, если опыта нет, то советую попробовать несколько и выбрать тот что ближе именно вам.
                    0
                    в перспективе мне несколько сайтов именно на PHP нужно будет создать, поэтому может быть стоит потратить время и изучить, например yii
                    +1
                    4) без фреймворка, использовать какую-нибудь ORM

                    за: серверу будет легко.

                    интересный вывод
                      –2
                      без фреймворка, соответственно без обработки запроса через несколько классов, требования к памяти будут ниже
                      0
                      А зачем ORM, если сайт очень простой, как вы говорите?
                        0
                        Если бы у PHP была возможность работы с базой без написания «INSERT INTO ...+ value1 + »," + value2, то скорее всего выбрал бы native PHP, а так мне свой класс для работы с базой неохота писать
                          0
                          А взять готовый? На dklab.ru, например?
                            0
                            спасибо за ссылку — посмотрю
                            0
                            а PDO вас не устраивает?
                              0
                              честно — не знаю, может быть и подойдет, сейчас почитаю документацию
                                0
                                почитал про PDO — если не брать в расчет все остальное, а только работу с базой — то PDO то, что нужно
                              0
                              PDO по-моему вполне на уровне JDBC. Если не хватает — смотрите Doctrine.
                                0
                                Active Record чем не устроил?
                              0
                              А почему вы symfony не указали?
                                0
                                Негативные воспоминания трехлетней давности, добавил поле в таблицу — приходилось пересобирать исходники командой типа

                                symfony add-field

                                и хоть может быть сейчас все поменялось, но symfony точно не мой выбор
                                  0
                                  Ну пересобрали. И что? Если нормально писать код, то это никак не будет влиять на проект.
                                    0
                                    Какбе за три года там очень многое поменялось. А вообще предполагалось, что разработчик будет использовать fixtures. Добавил поле — фикстуры править не нужно, перезальётся и так (если оно не notnull); удалил поле — переписал фикстуру. Затем перестроил БД и перезалил данные из фикстур. Вуаля.
                                      0
                                      Вопрос выбора фреймворка немного религия :) и симфонию я могу добавить как вариант, но я точно знаю, что не выберу, причем аргументы уже будут религиозного порядка :)
                                        0
                                        В принципе, да — не выбирайте. Там порог вхождения высокий, много читать нужно. И приёмы работы трёхлетней давности почти не годятся.
                                          0
                                          [offtopic]Кстати, а почему религия?[/offtopic]
                                            +1
                                            CodeIgniter или Kohana? Конечно, Kohana!

                                            — почему?
                                            — Kohana поддерживает только PHP5, значит у нее код чище, кошернее :)
                                              0
                                              Да не про это я. Почему «вопрос выбора фреймворка немного религия :)»? Не CI vs Kohana, а фреймворка вообще?
                                                0
                                                немного религия, потому что все фреймворки не видел, не работал с ними и поэтому оценка идет по разным косвенным показателям
                                            0
                                            Автор! Рискую быть жестко заминусованым тобою, но мне насрать, что я увидел в топике, ты не очень в теме :)

                                            А вообще давай поговорим и натему религии. Да и в symfony уже не то что 3 года назад :)) Мое мнение symfony на данный момент самый магический(сплошная магия) фреймворк для и на пыхе! Этакой пыхный РОР!
                                              0
                                              1. я не хочу сравнивать PHP и другие языки — те проекты, для которых я выбираю framework, должны быть на PHP (требование Заказчика) и соответственно можно сказать что других языков нет

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

                                              @Import Namespace=«System.Data»
                                              @Import Namespace=«System.Web»
                                              @Import Namespace=«System.Collections»
                                              @Import Namespace=«System.Data.SqlClient»
                                              @Import Namespace=«System.IO» %>
                                              @Import Namespace=«System.Text.RegularExpressions»
                                              @Import Namespace=«System.Web.Mail»
                                              @Import Namespace=«System.Security.Cryptography»
                                              @Import Namespace=«System»
                                              еще строчек 20

                                              и мне кажется, что симфония (пусть это 3 летней давности воспоминания) требует много строительного кода, хотя может я и не прав

                                              3. Выбор я свой сделал в пользу Zend'a :),… на решение повлияло то, что можно поставить opcode cacher и забыть про размер фреймворка

                                              4. и да, моя обычная разработка идет вне PHP, так что я не очень в теме
                                                0
                                                IMHO Symfony строительного кода требует не больше чем Zend.

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

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

                                                Так выпьем же за то, что бы Вы пользовались фреймоврками в которых есть сердце:))
                                                  0
                                                  Полностью согласен =)
                                                0
                                                Ничего там магического нет. Читайте код. Ручной работы с symfony существенно меньше — это да.
                                              0
                                              Как все жестоко звучит o_O
                                                0
                                                Почему жестоко?
                                                  –1
                                                  Ну откуда я знаю «почему»? Но для себя уже решил, что после

                                                  1. добавил поле в таблицу — приходилось пересобирать исходники командой типа symfony add-field
                                                  2. Добавил поле — фикстуры править не нужно, перезальётся и так (если оно не notnull); удалил поле — переписал фикстуру. Затем перестроил БД и перезалил данные из фикстур.

                                                  симфони точно трогать не буду… Как говорится, на вкус и цвет все карандаши разные…
                                                    0
                                                    Это нормальный workflow разработчика. На production эти изменения накатываются при помощи миграций, и ни о каком удалении БД с живыми данными речь не идёт.

                                                    Вообще же судить о инструменте по некомпетентным высказываниям я считаю опрометчивым.

                                                    А вообще вы забавный — сначала говорите «Как все жестоко звучит o_O»; а в ответ на закономерное «Почему?» выдаёте «Откуда я знаю?».
                                                      0
                                                      >А вообще вы забавный — сначала говорите «Как все жестоко звучит o_O»; а в ответ на закономерное «Почему?» выдаёте «Откуда я знаю?».

                                                      Что именно забавно? =). Звучит действительно жестоко. Столько действий при добавлении/удалении поля в таблицу…
                                                        0
                                                        Это в вас говорит когнитивный диссонанс, не переживайте. На самом деле очень удобно.
                                          +1
                                          «Тяжеловестность» — не аргумент вообще. Будут тормоза, тогда и начнете искать реально узкие места, коими в 90% случаях будет база.
                                            0
                                            а можно развернуть ваш комментарий? Мне до этого казалось, что большой фреймворк обычно требует больше памяти для всех своих подключаемых исходников и соответственно будет проигрывать решениям на более легких фреймворках
                                              +1
                                              Ставим opcode cacher — и ВНЕЗАПНО потребление памяти сравнивается. А объём ручной работы — не меняется.
                                                0
                                                то есть исходники грузятся только один раз и сколько они занимают 2 мб или 25 мб уже неважно
                                                  0
                                                  Да, скомпиленные опкоды кладутся в shared memory и дёргаются по необходимости с минимальными затратами прямо из RAM. Кроме того, у фреймворков для людей (вы удивитесь, но это снова symfony) есть привычка для production-окружения формировать один большой файл с классами ядра (поведение тонко настраивается) и неявно подсовывать кэшеру уже его, что ещё больше увеличивает быстродействие.
                                            0
                                            Я бы на Вашем месте подумал над использованием готовой CMS, как советовали выше. НО, был задан конкретный вопрос про выбор фреймворка, значит на него и нужно отвечать. =)
                                            Мое мнение — выбор фреймворка — дело личное, скажем я использую symfony, попробовал zend — не понравилось (это ни в коем случае не означает, что zend — плохо, вовсе нет). Yii — неплохой, но для себя не вижу смысла на него переходить. С Kohana не работал. Я так понял, что Вы уже работали с Zend и Symfony. Если есть время и желание экспериментировать, пробуйте Yii, если времени, как обычно нет, то что мешает опять воспользоваться Zend или Symfony? Мне кажется, что однозначного решения нет, у всех фреймворков есть свои плюсы и минусы. На любом из них (я имею ввиду перечисленные) можно сделать качественный продукт, который и нагрузку будет держать и работать стабильно.
                                            насчет пункта 4 (только ОРМ)… лично я бы не стал использовать только ОРМ — так как пришлось бы больше кодить, а поскольку у меня есть склонность к перфекционизму, это может закончиться написанием собственного фреймворка или СMS, т.е. созданием еще одного велосипеда. К тому же не уверен, что использование только ОРМ существенно улучшит производительность, чем использование фреймворка с ОРМ.

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

                                              +1
                                              CMS здесь не подходит, потому что сайт хоть и маленький, но нужны всякие фишки, которые проще сделать с фреймворком… как пример, как сделать с CMS надпись в ленте комментариев «НЛО прилетело и опубликовало эту надпись»

                                              Почему бы не попробовать с тем чем работал (Zend, Symfony), до этого все фреймворки(языки) выбирали заказчики, а тут в кои веки у появился выбор
                                              0
                                              Тяжеловесность ZF полная фигня, в большинстве случаев 90% времени генерации страницы занимают запросы к БД, а если ещё поставить кэшер опкода… в общем надуманно это всё, код красив, понятен, пишешь код и диву даёшься как всё продуманно. Единственное что плохо, это долгая настройка инициализирующих параметров «под себя», но это надо сделать всего один раз, затем можно тупо копировать из проекта в проект, просто внося мелкие изменения.
                                                0
                                                «долгая настройка инициализирующих параметров «под себя»» — это правильно подмечено
                                                  0
                                                  Это даёт огромные возможности подгонки под собственные нужды, в других фреймворках иногда надо из-за этого в исходный код лезть. Нет худа без добра, и наоборот ;)
                                                  0
                                                  долгая настройка инициализирующих параметров «под себя»


                                                  В последних версиях все намного проще.

                                                  zf create project и вперед. Даже настраивать почти ничего не нужно. Расположение и структура файлов и папок теперь стандартизированы.
                                                  0
                                                  zf — хороший фреймворк, а для ускорения еще есть акселераторы

                                                  Only users with full accounts can post comments. Log in, please.