Пользователь
–1,6
рейтинг
6 мая 2013 в 11:25

Разработка → Как я выбирал легкий PHP фреймворк из песочницы

Frameworks
Для начала скажу что я очень большой любитель что-то попатчить и потвикать, даже если для этого нету особой необходимости. И вот недавно рассматривая статистику XCache на своем сервере я подумал что смог бы оптимизировать объем памяти который он тратит на опкеш (opcache) файлов различных фреймворков. Сделать это просто — переписать все используя только один, файлы которого были бы общими для всех сайтов, каких у меня порядка 20-ти, но в большинстве они довольно простенькие и особого труда их переписать мне бы не предоставило. И тут я начал поиск того самого фреймворка, который в идеале имел бы достаточно фич чтобы разработка была простой, и в тоже время был легким и быстрым. Вот те которые мне понравились и мои мысли о них.

Phalcon

Phalcon
Интересный в первую очередь тем что написан на С и компилируется как модуль для PHP. Судя по бенчмаркам работает намного быстрее других (где-то в 3 раза быстрее среднего) и при этом соблюдая достаточно привычную MVC структуру. Так же очень порадовало то, что Phalcon использует Dependency Injection и предоставляет свой DI контейнер, но вот судя по туторилам всё равно очень часто классы используются напрямую, при этом включая статические методы, чего лично я стараюсь избегать. К слову должен сказать что модуль скомпилировался и заработал с первого раза, без танцев с бубнами, что всегда приятно. Посмотрев немного глубже я начал видеть больше недостатков, во-первых не так уж много PHP программистов которые достаточно хорошо знают С чтобы помочь в его разработке, как следствие Phalcon будет развиватся медленнее его PHP собратьев. Во-вторых, в нем придумано много своих костылей, как например PHQL (Phalcon Query Language) на замену SQL и т.д. В итоге имеем достаточно смелый проект с неизвестным будущем.

PHPixie

PHPixie
О нем я услышал совсем недавно, его упомянул в своем твите Phil Sturgeon (разработчик PyroCMS и член PHP-FIG) и я сначала подумал что это попросту шутка. Серьёзно, я считаю что ни один PHP программист не сможет прослушать интро на главной странице до конца при этом не рассмеявшись. Философия PHPixie в том что фреймворк должен быть быстрым и легким как маленькая фея, этого разработчики пытаются достичь подходом известным питонистам как «Simple things should be simple, hard things should be possible». То есть компоненты PHPixie написаны так чтобы самым простым и быстрым способом справится с 90% рутинных задач при разработке сайтов, а оставшиеся 10% сложных более редких задач предполагается разработчик решит сам и незачем их включать в сам фреймворк. Должен сказать что в ни одном из моих сайтов не использовалось ничего такого чего не было бы в PHPixie, и даже Dependency Injection у них довольно хорош, хотя и склоняется в сторону Service Locator. В отличии от других реализаций DI контейнеров новые элементы добавляются в него посредством расширения класса, что менее гибко, но намного более прозрачно, при этом позволяет полностью избежать процедурного кода и получить распознавание класса элементов контейнера в IDE. Из минусов могу только отметить то, что воспринимать его серьёзно достаточно трудно, и вряд ли вы сможете убедить ваших сотрудников в офисе писать что-либо на фреймворке с феями и пони.

Fat-Free

image
Весь фреймворк одним файлом! Огромный плюс сразу на лицо: один файл с диска подгрузится быстрее чем множество, причём размер этого файла примерно 50 килобайт. Правда как оказалось в этом одном файле далеко не весь фреймворк, а только самая основная его часть, то есть если вам например понадобится доступ к базе данных то классы все равно придётся подргружать.Тем более тот же XCache и так кеширует PHP код, в таком случае выигрыш от такого подхода если и будет то очень небольшой. Вместе с фреймворком поставляется просто куча библиотек, что удобно если не использовать Composer и совсем не нужно если использовать. Также очень удивило то, что их ORM не поддерживает связей между таблицами, без каких его можно сразу выбросить в окно, так как это очень сильно сужает область его использования. Это фактически единственный из рассмотренных мною фреймворков, который меня действительно в себе разочаровал.

Silex,Slim и микрофреймворки.

image
Об этих двух известно и так достаточно много. Так как они оба не предоставляют полный стек для разработки тут все будет зависеть от того какие библиотеки вы к ним прикрутите и как это сделаете. Из этого исходит гибкость микрофреймворков, но с другой стороны труднее будет найти коммюнити и суппорт, так как у каждого программиста в итоге своя система. К тому же если фреймворк пишется весь одними людьми его намного проще освоить, так как философия кода похожа. А вот если у вас франкенштейн собранный из разных библиотек, в которых разный стиль и подход, то разобраться в этом будет сложнее. В конечном итоге попытки сделать из Silex полноценный фреймворк e у меня приводят к собранию некого подобия Symfony. Тут следует отметить что написания кода на Slim и Silex происходит интуитивно, быстро и безо всяких магий.

Lithium

Lithium
Тут немного больше инноваций, например единое API для SQL и NoSQL баз данных, а также по словам разработчиков децентрализованная система фильтров. Фреймворк создан бывшим разработчиком CakePHP, и местами это очень даже заметно, как например при использовании моделей. Фильтры позволяют фактически перехватить вызов метода класса и на лету поменять его параметры и результат. Гибко, но в итоге можно получить макаронный код, наподобие того как работают плагины в Wordpress. Так же удивительно что столь инновационный фреймворк так упорно использует статические методы. Радует простая архитектура, то есть если создавать простенький сайт то количество кода который придестя написать не намного отличается от использования Silex. В принципе очень хорошо подходит для тех кто работал с CakePHP в прошлом, но хочет попробовать что-то новое.

Так какой же я выбрал в итоге? В конце мой выбор стоял между Silex и PHPixie (да, я не устрашился фей) и в результате я все таки использовал их обеих. Большинство сайтов перевёл на Silex, а те которые писались на Kohana портировал на PHPixie, интерфейс которой чем-то к ней похож, особенно реализация ORM. Этим я смог уменьшить примерно в 6 раз количество памяти потребляемое XCache, ускорить генерацию страниц и даже успел немного порефакторить по дороге. В общем PHP — страна тысячи фреймоврков, так что думаю каждый сможет найти что-то по душе.
@jigpuzzled
карма
18,0
рейтинг –1,6
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Разработка

Комментарии (23)

  • +1
    На тему скорости PHP да и не только фреймворков: www.techempower.com/benchmarks/#section=data-r4
    • +1
      Прикольно, не видел их раньше. Кстати пока смотрел фреймворки нашел также эти на сайте пикси:
      phpixie.com/blog/php-framework-comparison/ — колграйнд для фреймворков, больше нигде подобного не видел
      и
      phpixie.com/blog/php-framework-benchmark/ — более стандартный бенч, ничего особенного

    • 0
      Спасибо за ссылку, довольно познавательная, однако удручает отсутствие среди подопытных фреймворка Yii, поскольку он в последнее время довольно не плохо набирает популярность и на мой взгляд не менее распространен нежели Codeigniter и Kohana
  • 0
    Использовал php.net/manual/en/book.yaf.php нобольшой и компилируемый, меьше и быстрей Phalcon.
    Бенчмарки www.ruilog.com/blog/view/b6f0e42cf705.html
    • 0
      С того что я вижу Yaf предоставляет только базу, а ОРМ и все другое придется прикручивать. Но для простеньких штук (например чатик без БД) думаю подойдет отлично.
    • +1
      Меньше и быстрее Phalcon.


      Простите, что?
      Для скомпилированных фреймворков непонятно значение слова «меньше». Насчет быстрее, где бенчмарки?
      • 0
        бенчмарки www.laruence.com/2012/09/16/2791.html у меня на пустой проект ab test был ~ на 15% быстрей у yaf
        меньше по функционалу
        • 0
          А, ну если меньше по функционалу, тогда он вполне может быть быстрее.

          Вообще стоит всегда понимать, действительно ли нужен MVC. И стоит тратить ресурсы на обработку всех его компонентов.
    • 0
      Там 0.4.5 версия Phalcon, посвежее нет тестов?
  • +1
    Ну я вел к тому что в результате таки придется ставить библиотеки которые уже не будут модулями к ПХП. Модуль фалкона поставляется с гораздо большим количеством фич.
  • +3
    Ну почему у Phalcon странное будущее?
    За год доросли до полноценной стабильной версии. Огромная куча интерфейсов. Не нравится встроенный ORM, используйте свой.
  • 0
    Ну если использовать други библиотеки тогда не так шустро будет.
    Странное потому что пхп девелоперам без знания Си трудно будет что то к нему допилить или даже понять его сорс.
    • 0
      Я так понимаю, Вы пытались ответить мне, только промахнулись?
      Как часто Вы лезете в сорсы фреймворков вроде Zend или YII и правите их? А что Вы будете делать после обновления фреймворков? Вы конечно живите как хотите, но нормально — это расширять, что очень легко делать с Phalcon.
      • 0
        Я имел ввиду что другие фреймворки часто патчатся людьми котрые их используют и находят баги. А без знания Си патчить Фалкон не выйдет, и даже крутые ПХП девы не смогут его поедитать
        • 0
          «ПХП девы», заработался, несколько раз перечитал )
          Ну дык, для этого есть сообщество и issue трекер на Гитхабе. Создатели фреймворка активно фиксят баги. Постоянно пополняется список unit тестов. Даже если его забросят на текущем этапе развития — это никак не отразится на создаваемых проектах. Уверяю, это не самая большая проблема.
          Нужно в первую очередь думать об удобстве и возможностях, а также оправданностью и возможностью использования.
  • 0
    А в Silex использовали ORM? Очень хочется Doctrine, тк с ней разобрался, провайдер есть, но не получается настроить генерацию entities с неймспейсами, возможно у вас получилось?
    • 0
      Доктрина по мне уж слишком тяжелая, прикручивать ее к легкому сайлексу всё равно что к велосипеду прицеп цеплять. З сайлекс можно попробовать www.phpactiverecord.org/. Как вам?
  • 0
    PHPixie понравился, правда феи ассоциируются с магией, а магия в коде — дело неблагодарное.
    Но после беглой пробежки по коду, магии не обнаружил и успокоился.
  • 0
    Незаслуженно забыт Fuel.
    • 0
      он не легкий, на уровне Коханы
  • 0
    Довольно интересен фреймворк Laravel. А вот и обзорная статья: Laravel — PHP Framework для ремесленников.

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