<rmcreative>

RSS

Сравнение популярных PHP-фреймворков

8 июля 2011

CMS Magazine опубликовал собранную мной сравнительную табличку по PHP-фреймворкам. Данные очень субъективны и основаны на личном опыте, поэтому ранее я не акцентировал на ней внимания. Если у вас есть уточнения или что-либо кажется вам совсем не верным, напишите об этом в комментариях.

Рассматриваем

Комментарии RSS

  1. №4923
    Алексей
    Алексей 08.07.2011, 17:23:21

    Единственно что в Yii сделано очень плохо это примеры. Их попросту нет. 'Блог' идёт в комплекте с yii.

    Да кому он нужен этот блог? Сделали бы реальные примеры, например: он лайн магазин из него хоть какие то знания можно получить. Читаю вот книгу Jaffrey Winesett. Он взял блог - назвал его trackstar. В yii идёт другое название - и зачем было переименовывать - не могу понять, зачем людей путать.

    Сплошные Unit тесты. Как начинаться у него глава? Unit тест, даже yii не начал разбирать сразу на тестирование пошел.

    Я постоянно мучаюсь с поиском "точки" в конце предложения что бы понять где начинается уже нормальное объяснение самого yii, то за что я заплатил.

    Можно было бы и в конце книги приступить к тестированию. Понятно что для профессионала понять тестирование легко, так профессионал и не купит книгу - он уже все знает, купят ее те кто изучает Yii framework, расширяет свои знания. Замете речь идёт об англоязычной книге и объяснениях.

    Есть сайт: www-spreadia-com Разработчики изучали и писали проект на yii - год. И это не какие то школьники, а мужики с образованием и сертификатами.

    Так что yii на мой взгляд ещё сыроват, и документация к нему очень слабая.

  2. №4924
    OZ
    OZ 08.07.2011, 17:33:23

    Надо посмотреть код Kohana...

  3. №4925
    Sam
    Sam 08.07.2011, 17:35:39

    Алексей, у Jeff-а вроде не блог совсем. Там багтрекер. Да и это не официальная документация, а книга. С тестирование да, согласен, что его там слишком много.

    Есть сайт: www-spreadia-com Разработчики изучали и писали проект на yii - год. И это не какие то школьники, а мужики с образованием и сертификатами.

    Это хорошо или плохо?

  4. №4926
    Алексей
    Алексей 08.07.2011, 17:43:05

    Это хорошо или плохо?

    Я сказал это к тому что документация сложна в понимании даже для людей с опытом. Я видел как они сидели мучились. Раз Yii framework - скоростной вот и подсели на него.

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

    Вот и мне теперь очень тяжело, но если я его взялся учить значит должен "добить". Хотелось бы видеть по больше примеров. Пусть они будут платные, но что бы были написаны профессионалами - знающие свое дело и могли сказать так: "Надо делать так, а не иначе".

  5. №4927
    medar
    medar 08.07.2011, 18:28:06

    На форуме Коханы выделена специальная ветка для русских и жизнь там есть. Имхо, это можно считать русским сообществом.

  6. №4928
    nex2hex
    nex2hex 08.07.2011, 18:38:49

    Выскажусь по недостаткам коханы в статье (версия 3.1):

    Документация - Скудная, местами отстаёт от кода Сейчас не верно, основная часть хорошо описана в документации которая идет вместе с фреймворком. Недостающие мелочи как правило находятся по превому запросу в гугле

    Русскоязычное сообщество - http://forum.kohanaframework.org/categories/russkoyazychnoe-soobschestvo/p1

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

    Unit-тесты для исходного кода фреймворка присутствуют

    Очень просто интегрируются автолоадеры других фреймвороков. Интеграция ZF занимает 1 строчку и пример дан в документации. Подключить фреймворк к другим проектам проблем нет (подключение к CKFinder - файловому менеджеру) заняло тоже 1 строчку.

    Минус фремворка - по-умолчанию нет модуля для работы с формами, но есть сторонний Formo реализующий этот функционал, достаточно гибкий. Сейчас модуль находится в стадии 2.0RC2

  7. №4929
    idle
    idle 08.07.2011, 18:45:11

    @Алексей,

    Так что yii на мой взгляд ещё сыроват, и документация к нему очень слабая.

    Глупости говорите. Гайд даст отличный кик-старт, справка по апи и сообщество (в т.ч. русскоязычное) покроют 98% возникающих вопросов. За ответами на оставшиеся 2% придётся обратиться непосредственно к Квану и Саше %)

    Я сказал это к тому что документация сложна в понимании даже для людей с опытом. Я видел как они сидели мучились.

    Бедные-бедные.

  8. №4930
    Алексей
    Алексей 08.07.2011, 19:25:02

    Бедные-бедные.

    Я не собираюсь утверждать для тех кто уже более менее знает Yii, я говорил с позиции новичка. Если у кого то с "пол пенка" пошло дело - то я очень рад.

  9. №4931
    AmdY
    AmdY 08.07.2011, 19:59:51

    про документации yii страшное враньё, она почти самая худшая. очень много вранья про zend, наверное автор как и я давно с ним не работал. но я недавно делал проект на свежей версии. никакой допилки уже не нужно, всё прекрасно конфигурируется через конфиг, есть консольные тулзы интегрированные с IDE. Документации начиная с 0.x версий - прекрасная. ORM есть Zend_Table реализует паттерны Table Data Getway.

    фактически в зенде есть всё то, чего не хватало в верссии 1.0 на которой я его забросил и начал клепать свой фреймворк.

  10. №4932
    Sam
    Sam 08.07.2011, 20:27:26

    AmdY, что именно в документации не так? Я просто постоянно слышу противоположные мнения, которые ещё и меняются со временем.

    Вообще да, я с ZF давно не работал.

  11. №4933
    Dr0ID
    Dr0ID 08.07.2011, 21:37:10

    В доке примеров реальных нет и нюансов. Кикстарт хороший если уже когда-то работал с фреймворками и есть представление "что это за бубуйня", иначе — без бутылки... Patterns and practices были бы очень кстати. Про нюансы, например, вот — http://yiiframework.ru/forum/viewtopic.php?f=3&t=963&start=60#p8953 до сих пор не исправили. Однако, товарищ в комментах к CJuiDialog написал про это. Это не единственное что встречал, просто уже не помню.

  12. №4934
    Максим
    Максим 08.07.2011, 22:15:28

    А по мне yii очень простой, я его изучал и сразу начал применять на реальном проекте совсем не имеея представления об ООП. довольно быстро (за месяц) я уже легко разбирался в ядре yii, и даже фиче реквест несколько сделал.

    Пробовал с zend, потратил много времени и зря, ниче не вышло. Видимо дефицит нормальной документации. Описано как контроллеры делать - хорошо, а как модули ? И что вообще у них с кодом внутри (ничего не ясно, логика не ясна + код раздутый слишком), документация дает лишь базовую, стандартную документацию, но не более того. Азы конечно подробней описаны чем в yii, но как надо делать в реальных приложениях не нашел инфы. Зенд я стал изучать после yii, В итоге пришлось отказаться от зенда. Слишком уж сложно все, все сделано по классике. Хочешь приложение - пиши свой BootStrap и т.д. (точно не вспомню всего), но зато с формами частично хорошо сделано (если б не надо было их декорировать). Зенд хорош в некоторых местах, но, сделан не для простых программистов, а для "Фаулера" (думаю мысль ясна, Фаулер крут).

  13. №4935
    Алексей Качаев
    Алексей Качаев 08.07.2011, 22:55:51

    Мне честно говоря не понятны все комментарии по поводу недостатки документации к тому или иному фреймворку. Что значит "дефицит нормальной", "недостаток", "документация ужасна"? Понятно, что идеальной документации не бывает, но для всех перечисленных фреймворков документацией она (дока) как минимум адекватна. По Зенду дефицит документации? Да ее тоны. Читал бы кто...

    Более того, все фреймворк Open Source, никто ни от кого не прячется, есть конкретная претензия к доке - пишите авторам или спец. командам, которые этой докой занимаются. Вас с удовольствием выслушают. Нашли какой-то момент, который плохо освещен, но сами разобрались - киньте фрагмент написанной вами доки и в случае его адекватности его включат в состав.

    @Максим

    ничего не ясно, логика не ясна

    в Зенде бОльшее количество кода, действительно, академически грамотно (хотя есть исключения). его просто читать ровно настолько, насколько вообще просто читать код на php. если разбираетесь в паттернах хорошо, там все по ним и сделано.

    Хочешь приложение - пиши свой BootStrap

    зачем? zf create project не устраивает?

    формами частично хорошо сделано (если б не надо было их декорировать)

    а кто вас заставляет их декорировать?

  14. №4936
    Максим
    Максим 09.07.2011, 1:10:54

    Когда я писал под зенд zf create еще не было(вроде так, но точно не вспомню почему мне удалось им воспользоваться). И я бы не сказал что код сильно понятный (на тот момент, по крайней мере для меня). Формы я декорировал так как надо было вывести форму в приятном оформлении. С применением zf create ясное дело намного легче будет работать, но, увы я его не применял. В плане конфигурации зенд тоже очень сложен(на мой взгляд). В общих чертах идея у зенда классный, но, ковырять внутренности с той же простотой как и в yii мне не удалось. Именно это меня и остановило. Не страшно что я в инглише слаб, и что хорошая документация тока на инглише есть, страшнее было то что большая часть кода(который я корвыряд) трудночитаема, труднопонимаема или изрядно устарела. Я не просто так вспомнил про модули, ведь инфы про создание модулей под актуальную на тот момент версию я не нашел.

    Дабы не разводить здесь религиозных войн - лучше дайте ссылки на полезную, актуальную инфу о зенд, чтобы сделать так называемый быстрый старт(я про что-то сложнее чем страница с hello world), тогда мое мнение станет более объективным, и я смогу точно ответить что мне понравилось, что нет (как я могу сказать про yii).

    P.S.: В итоге я стал фанатом yii, так как лучше его пока не видел. Возможно зенд со временем с вашей помощью и помощью других людей(когда я пойму его лучше) встанет на второе место, но, пока ему и до второго места далеко.

  15. №4938
    Wallhatt
    Wallhatt 09.07.2011, 9:07:07

    С документацией Yii все нормально. Ни по Зенду, ни по другим достойным фреймворкам нет перевода документации вроде yiiframework.ru . Конечно, есть узкие и малоописанные места — но где их нет? Главная, чтобы было с чего стартовать и оно у Yii есть.

  16. №4939
    Wallhatt
    Wallhatt 09.07.2011, 9:08:18

    Максим, согласен с вами по Зенд.

  17. №4940
    Андрей
    Андрей 09.07.2011, 11:25:03

    А я вот учу Yii и Symfony 1.4, 2. На S1 уже сделал три проекта - очень доволен, в йии нехватает нескоольких примочек из S1. S2 -- идеален :) надо только чтобы допилили кодо-генератор на сто процентов.

  18. №4942
    Павел
    Павел 09.07.2011, 14:00:15

    На прошлой работе писали на Yii. Теперь Magento (Zend). С ностальгией вспоминаю Yii. Отличный фреймворк. Если на документацию изначально ругался из-за отсутствия примеров, то потом они стали просто не нужны - API было более чем достаточно. К тому же, cookbook + сообщество просто замечательные.

  19. №4943
    Максим
    Максим 09.07.2011, 17:12:55

    В качестве + к зенду. Если б мне тогда не понадобилось делать модули - я бы, возможно, не отказался от него.

  20. №4944
    biakaveron
    biakaveron 09.07.2011, 23:07:04

    По Kohana:

    1. Юнит-тесты есть (папка tests в корне фореймворка).
    2. В общем описании Kohana я бы упомянул каскадную файловую систему - очень удобная штука.
    3. По поводу русского сообщества в принципе наверху ответили, есть ветка официального форума.
    4. PHP 5.2 ЕМНИП не будет поддерживаться начиная с версии 3.3 (ориентировочно начало 2012 года) - мало ли ;)

    Вероятно, стоит упомянуть частоту выхода версий (и их особенности). Скажем, тот же CI очень долго "рожал" новую версию, а YII с Kohana весьма быстро развиваются.

  21. №4946
    Sam
    Sam 09.07.2011, 23:18:03

    biakaveron,

    Да, с Kohana я, пожалуй, меньше всего знакомился на практике. Каскадная ФС — очень интересное решение. К тому же, autoload, несмотря на каскадность, очень шустрый.

    Про частоту выхода версий определённо стоит упомянуть. У CI были приличные проблемы, поэтому и полуторогодичная задержка в развитии. Сейчас вроде там всё поменялось к лучшему. Yii развивается быстро, но при этом нас немного тормозит обратная совместимость. В Kohana, насколько помню, релизы довольно частые и обратная совместимость частенько ломается.

  22. №4947
    biakaveron
    biakaveron 10.07.2011, 0:10:42

    Sam,

    Обратная совместимость конечно штука хитрая :) Трудно найти баланс. В Kohana в принципе между мажорными релизами совместимости не будет, но ведь тут вопрос в сложности перехода. Например, 3.1 принес очень много изменений по сравнению с 3.0, многие вещи придется переделывать. А вот 3.2, судя по всему, практически ничего не сломает.

    С другой стороны, если ничего не ломать, то и дальше двигать практически нереально. CI тому пример.

  23. №4948
    Павел
    Павел 10.07.2011, 2:49:21

    В качестве + к зенду. Если б мне тогда не понадобилось делать модули - я бы, возможно, не отказался от него.

    Поясните, пожалуйста от кого? От Зенда? Чем плохи модули в нем?

  24. №4949
    idle
    idle 10.07.2011, 7:30:48

    @Алексей Качаев

    Мне честно говоря не понятны все комментарии по поводу недостатки документации к тому или иному фреймворку.

    Про достатки и недостатки документации хорошо говорил Каплан-Мосс на PyCon 2011. Рекомендуется к просмотру и усвоению: Writing great documentation.

  25. №4950
    Максим
    Максим 10.07.2011, 11:42:56

    Павел, от зенда. Модули не плохи в зенде, но сложны в реализации для новичка.

  26. №4951
    Sam
    Sam 10.07.2011, 15:12:38

    biakaveron, причины проблем с CI совершенно иные. Yii же как-то развивается без поломок.

    idle, спасибо, посмотрим.

  27. №4952
    Павел
    Павел 10.07.2011, 19:00:42

    Павел, от зенда. Модули не плохи в зенде, но сложны в реализации для новичка.

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

  28. №4953
    Максим
    Максим 10.07.2011, 22:21:56

    Можно можно, основная проблема во времени... И я про новичка в zend(имеющего только опыт в yii и немного ci)

  29. №4954
    Sam
    Sam 11.07.2011, 2:41:28

    idle, хорошее выступление. Пару-тройку интересных вещей взял на заметку. Применим к Yii.

  30. №4960
    Сергей
    Сергей 12.07.2011, 1:19:59

    а чего везде пишут что у CI отличная документация то? По моему то еще убожество...

  31. №4961
    Stepan Tanasiychuk
    Stepan Tanasiychuk 12.07.2011, 4:04:54

    в ZF модульная структура подключается одной строчкой в конфиге. в остальном структура модуля повторяет структуру "не модульного" приложения. примеры структуры есть в документации

    создать новый модуль можно одной командой в консоли "zf create module name".

    вобщем трудности модулей в ZF явно надуманные. было бы желание :)

  32. №4962
    Stepan Tanasiychuk
    Stepan Tanasiychuk 12.07.2011, 4:12:21

    у ZF и Symfony2 указана "Сложность настройки" как высокая. конечно все относительно, но я не думаю, что аналогичные вещи в Yii/Kohana/CI делаются просто.

    у Symfony2 есть русскоязычная группа в google groups http://groups.google.com/group/symfony2-ru + группа в общем по Symfony http://groups.google.com/group/symfony-ru

    форум http://symfony.org.ua/forum/

    и отдельная ветка на zf форуме :) http://zendframework.ru/forum/index.php?board=38.0

    также на Symfony2 можно делать маленькие и средние проекты. настройки он требует немного. есть web конфигуратор

  33. №4974
    Alex Shinkevich
    Alex Shinkevich 12.07.2011, 16:06:50

    Присоединяюсь ко многим комментаторам. Документация как документация очень даже ничего, но вот примеров мало и они очень невнятны. Сейчас как-раз занимаюсь с Yii и приходится постоянно гуглить и искать по yiiframework.com

    Вот, например, прямо сейчас с модулями неразбериха, есть примерно такая структура:

    -app -modules -dicts -modules -cartridges

    Так вот, из подмодуля cartridges я никак не могу получить нужные переводы в cartridges/messages. Т.е. проблема есть у многих, чего не скажешь про решения. Убил 2 часа, уже бы сам написал систему переводов, но хочется, чтобы можно было обновляться централизовано.

    В общем ставить документацию Yii рядом с CI2 как-то даже не смешно

  34. №4975
    OZ
    OZ 12.07.2011, 16:12:29

    Посмотрел код Kohana - отстой. Нет пространств имён, имена файлов не совпадают с именами классов, в именах классов встречается подчёркивание, в каждом файле ущербное "defined('SYSPATH') or die" - слов нет, как ушлёпищно это выглядит. Конфиг в массивах внутри php-файлов, не в классах, которые можно extend, а тупо в массивах руками всё пишется - и что будет после обновлении версии фреймворка, все конфиги сбросятся в default?

  35. №4976
    OZ
    OZ 12.07.2011, 16:16:16

    Я прошу не обижаться приверженцев Коханы - претензии не к вам, а к авторам кода.

  36. №4977
    Павел
    Павел 12.07.2011, 16:17:57

    В общем ставить документацию Yii рядом с CI2 как-то даже не смешно

    Ну, так же, как не смешно сравнивать функциональные возможности обоих фреймворков. А на счет

    из подмодуля cartridges я никак не могу получить нужные переводы

    не совсем понятно о чем речь

  37. №4979
    Sam
    Sam 12.07.2011, 16:26:32

    OZ, во многом согласен, хотя массивы отлично наследуются через array_merge и ему подобные функции.

    Stepan Tanasiychuk, естественно, сложность относительная. По сравнению с CodeIgniter тот же Symfony достаточно сложен.

    Да, группы, конечно, те ещё… особенно по Symfony 2 с единственным сообщением. Ветка на ZF — это не серьёзно, да и небольшая она совсем. Форум ничего так, хотя тоже довольно вялый. Давно бы уже отхватил какой-нибудь symfony2.ru, да сделал всё как надо ;)

    Alex Shinkevich, попробуйте на форуме поспрашивать, если ещё не пробовали.

  38. №4982
    Alex Shinkevich
    Alex Shinkevich 12.07.2011, 16:35:52

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

    не совсем понятно о чем речь

    В Yii очень гибко можно работать с модулями. Собственно мне нужно в модуле реализовать подмодули. С эти тоже все просто. Но вот реализовать уже в подмодуле локализацию штатными средствами у меня не получилось. Перепробовав все варианты в Yii::t("dicts.cartridges.category", "term"), Yii::t("category", "term"), Yii::t("modules.dicts.modules.cartridges.category", "term") и т.д. я так и не смог вывести перевод из файла apppath/modules/dicts/modules/cartridges/messages/category.php Причем вопросов по этой проблеме на yiiframework.com много. Вроде ничего сверхъестественного, наверняка многие наступили на эти грабли и как-то это обошли. Вот только делиться советами на форуме сообщества специалисты явно не хотят.

  39. №4986
    Sam
    Sam 12.07.2011, 17:30:28

    Alex Shinkevich, никогда не пробовал так делать, сегодня-завтра попробую и расскажу как, если это возможно.

  40. №4987
    Alex Shinkevich
    Alex Shinkevich 12.07.2011, 17:33:41

    Спасибо. Sorry, что заспамил блог. Но на форумах yiiframework.ru и yiiframework.com есть темы с данным вопросом. Можно наверное даже в user guide в раздел с l10n добавить, если это как-то решается

  41. №4988
    Sam
    Sam 12.07.2011, 17:47:25

    Если решается, обязательно добавлю.

  42. №5009
    Василий
    Василий 15.07.2011, 9:36:27

    "причины проблем с CI совершенно иные" Sam, можно подробнее? Может я пока грабель не увидел )))

  43. №5023
    Sam
    Sam 15.07.2011, 19:09:46

    Василий, вот парочка постов из архива:

  44. №5026
    Василий
    Василий 15.07.2011, 20:52:42

    Sam, спасибо, я читал эти статьи. Откровенно говоря, не так понял утверждение. Я начинал с CI, и продолжаю работать на нем же. Пользуясь случаем, говорю СПАСИБО тебе за статьи. В свое время они мне очень помогли. Просто ищу альтернативу CI, но пока как-то не складывается дружба с другими фреймворками. Меня устраивает в CI практически все. Даже отсутствие нормального GET. (В связи с этим пришлось пару плагинов на jQuery переделывать под POST))). Не устраивает только козий автокомплит и навигация по коду (ctrl+space) в IDE. А это существенно тормозит работу. А у разработчиков CI вроде не все так плохо, в репозитарии изменения происходили 12 дней назад.

  45. №5028
    medar
    medar 15.07.2011, 21:05:39

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

  46. №5029
    Sam
    Sam 15.07.2011, 21:26:43

    Василий, сейчас нормально стало, да.

    medar, кохану осилить непросто, особенно после CI и ожидании документации как в CI.

  47. №5030
    Василий
    Василий 17.07.2011, 10:33:24

    medar, ну в принципе из-за слабой повторяемости кода - не страдаю. Нужно было прикрутить генератор PDF, так что-то быстро вышло... А так у меня обычная связка - это CI + расширение HMVC + модуль авторизации Ion_Auth. И мой лист псевдокласса для автодополнения в Eclipse. Может сказывается то, что проекты попадаются не однотипные, и все приходится писать под конкретные нужды. Сейчас, например, пишу синхронный планировщик для предприятия, которое занимается установкой пластиковых окон. Так там просто контроллер связи между бд и Frontend'ом на javascript. Плюс контроллер на админку и статистику. Вот как-то и выходит само, что в стороннем коде пока потребности нет.

  48. №5047
    Павел
    Павел 25.07.2011, 15:48:41

    Третий год работаю с Zend Framework. Нравится и документация, и количество решенных вопросов. Фактически, на Зенде можно написать все что угодно, в случаях, когда не удобен функционал самого Зенда - очень легко переопределить методы и/или функции. Почти каждый из методов доступен как обьект/массив/etc. Что тоже радует.

  1. Почта опубликована не будет.

  2. Можно использовать синтаксис Markdown или HTML.

  3. Введите ответ в поле. Щёлкните, чтобы получить другую задачу.