Закрыть
E-mail:
Пароль:
Забыли пароль?
В каталоге проекта: 10 418 веб-студий, 904 CMS, 201 628 сайтов.
РегистрацияCMS MagazineВход
CMS Magazine CMS Magazine

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

Сравнение 6-ти популярных фреймворков по основным критериям (необходимый уровень знаний, сфера применения, документация и т.д.)

  Zend Framework 1 CakePHP Code Igniter 2 Kohana 3 Symfony 2 Yii 1.1
Описание Академически грамотный код. Очень гибок. Требует хорошего знания PHP и ООП. Придётся немного доводить под себя прежде, чем использовать. Сухая, но достаточно полная техническая документация. Много встроенного функционала. Всё довольно тесно интегрировано. Документация не в лучшем состоянии. Почти микрофреймворк. Очень лёгок для изучения. Отличная документация. Гибок. Легко использовать сторонний код. Быстр, гибок. Свой подход к модульности. Скудная документация. Активно использует командную строку, yaml. Мощный ORM, хорошая система view, генераторы кода, dependency injection для всего. Изучить очень непросто, несмотря на хорошую документацию. Проще в изучении, чем Zend и Symfony. Вобрал лучшее от Rails. Неплохой AR, хорошая система view, генераторы кода. Довольно тесная интеграция.
Необходимый уровень знаний PHP5, ООП, шаблоны проектирования. PHP, ООП, умение разбираться в исходном коде фреймворка. PHP, Основы ООП PHP5, ООП PHP5, ООП, ORM, консоль. PHP5, ООП.
Предполагаемые проекты Средние — большие Маленькие — средние Маленькие — большие Маленькие — большие Большие Маленькие — большие
PHP5.2 Да Да Да Да Нет Да
Жёсткая структура каталогов Нет (рекомендации) Да Да Да Да Нет (рекомендации)
Официальная поддержка интернационализации Да Да Да Да Да Да
Сложность установки и настройки Высокая Низкая Низкая Низкая Высокая Средняя
Требует настройки Много Немного Немного Немного Много Немного
Полная поддержка ORM Нет Да (не очень удобна) Нет (можно использовать Doctrine) Да Да (Propel, Doctrine) Active Record
Документация и примеры Хорошая Имеется Отличная Скудная, местами отстаёт от кода В процессе написания Отличная
Unit-тесты для исходного кода фреймворка Да Да Нет   Да Да
Англоязычное сообщество Да Да Форум, Wiki, туториалы, блоги Форум, блоги Да Да
Русскоязычное сообщество Да Почти не активно Документация, форум, блоги Нет Нет Документация, форум, блоги
Лицензия New BSD MIT Своя BSD-style MIT New BSD

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

Об авторе

Александр Макаров - опытный Java/PHP/веб-разработчик из Воронежа с опытом PM. Активный участник Open Source проектов и один из разработчиков PHP-фреймворка Yii. Работает с CleverTech и занимается созданием крутых штук на Yii.

Оригинал таблицы

Автор: Александр Макаров

Рекомендуем:

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

Anton      Создано: 8.7.2011, 16:03          

Отличная документация и примеры по Yii? API да, отличное. Но вот примеров не хватает.

resurtm      Создано: 8.7.2011, 16:05          

А чего именно не хватает в примерах?

Sasha      Создано: 10.7.2011, 1:20          

Работаю с yii полтора года +, когда начинал, очень, не хватало документации по zii.widgets классам.
тонкая их настройка, надо было лезть в исходники смотреть как оно работает, и это чтоб вывести VIEW !!!
Да, в zend виджетов вообще нет, но скудная документация на них в yii, очень усложняла их использование.
Как сейчас дело обстоит не знаю, тк клиентская часть нашего проекта была переписана на EXTJS и сейчас
мы юзаем в Yii только модели и контроллеры. Перезагрузки страниц у нас нет

Anton      Создано: 8.7.2011, 16:10          

Не хватает самих примеров в API smile.gif

Олег      Создано: 8.7.2011, 16:24          

Мне ещё из таблицы показалось, что автор больше всего любит Yii
Дочитав до конца увидел, что не зря показалось:

"один из разработчиков PHP-фреймворка Yii"

Кстати, Zend отлично работает с доктрин. На первом ZendConf этому посвятили целый доклад.

Александр Макаров      Создано: 8.7.2011, 16:42          

Anton
В API есть примеры не более-менее сложные вещи. Для простых get-set, естественно, примеров нет. А так http://code.google.com/p/yii/issues/list. Пишите, для чего именно нужны примеры, добавлю.

Олег
Я и не скрываю smile.gif Но выбирал я довольно долго и всё, что в таблице хотя-бы пощупал лично. На ZendConf в Питере я был, доклад помню. Doctrine надо сначала пару дней поприкручивать…

Жора      Создано: 8.7.2011, 16:54          

Zend

Не такой уж он и грамотный, достаточно немного побегать по классам, сами разработчики признают что много говна, обещают в З2 исправить.
Гибок, на то он и фреймворк, и что подразумевается под доведением под себя? Фреймфорк модифицировать "нельзя", если это подразумевается, если то, что, например, модуля авторизации нет из коробки как в юи или симфони, то да. Сложность настройки - легкая, если человек не совсеб деревянный. Поддержка ORM - любая, хоть пропел, хоть доктрин1, хоть доктрин2, хоть зенддб. Зенд адаптирован для исопльзования чего-то стороннего.

Symfony 2
Еще к плючам отнесите использование неймспейсов из PHP 5.3, что, в том числе ускорило скорость выполнения приложения. А так же по сравнению с первой, где без неймспейсов вообще говно творилось код стал понятнее, гибче и переносимее. Изучить не сложнее чем Zend. Проекты: маленькие - большие, а не просто большие. И желаетльно знание шаблонов проектирования. Сложность настройки чуть сложнее чем в Zend, но тоже не сложно по той же причине.

Yii
В Yii нет неймспейсов, соответственно все классы в перемешку, а вы об этом не упомянули. Из этого вывод - Yii говно, Yii не говно только для того, кто не осилил Zend или Symfony, или дял тех кто банально дописал автолоадер для работы с неймспейсами.

Александр Макаров      Создано: 8.7.2011, 18:50          

Жора
Кода без ошибок не бывает. Если разработчики признают ошибки — это, на самом деле, намного лучше, чем когда они упёрто говорят, что их нет.

Под доведением под себя подразумевается, что ZF из коробки не очень пригоден для типичных проектов: перед началом работы часто выкидывается стандартный autoloader, вводится кэш для разных частей самого фреймворка, прикручивается Doctrine и т.д. Сложность настройки высока в сравнении.

Насколько я смотрел Symfony 2, скорость там высокая из за грамотного кеширования метаданных и нормального autoload, который также кешируется, а не из за namespace. Код стал гибче и переносимее скорее после повсеместного введения dependency injection, а не из за namespace. То, что стало понятнее — это просто контраст с сильно навороченной S1. По моим ощущениям, порог вхождения в S2 если и понизился, то не сильно. Понять тот же dependency injection для новичка неимоверно сложно.

В Yii есть поддержка namespace на уровне autoloader-а wink.gif

Владислав      Создано: 8.7.2011, 22:03          

Симфони2 для больших? Ничего не перепутали? smile.gif
На нем отлично и маленькие-средние работают, впрочем, как и на первой. Но, конечно же, вторая под это дело намного лучше подходит.

Александр Макаров      Создано: 8.7.2011, 22:08          

Работают, ясное дело, нормально. Они на всех работать будут хорошо. Тут имеется ввиду целесообразность применения на разного размера проектах. Порог вхождения в S2 довольно высок и «с нуля» его для мелких проектов использовать как-то слишком.

Виталий      Создано: 9.7.2011, 11:09          

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

Александр Макаров      Создано: 9.7.2011, 22:10          

А как же найм новых сотрудников? Не все же проекты и не в любых количествах делаются одинм-двумя программистами. Хорошо знающих тот же Symfony2 нанимать дорого, лучше взять просто толкового человека, который в состоянии что угодно изучить, но тут появляется проблема: срок на проект три недели, а изучить Symfony2 из за высокого порога нужно минимум пару месяцев, чтобы выдать что-то, за что стыдно потом не будет. С крупными проектами в этом плане проще: есть время изучить фреймворк при этом принося пользу исправляя мелкие баги, есть на чём учиться, как верно программировать и т.д.

Anton      Создано: 10.7.2011, 14:03          

В Symfony2 не такая жесткая структура каталогов как вам кажется. Там много можно переопределять. Очень много. И директории в частности.
Жесткая структура там только в неймспейсах и правил расположения некоторых файлов в бандлах(имя бандла, папка Controller, папка Forms, Resources).
Все остальное варьируемое.

И где вы там нашли поддержку Propel ?
Нет ее там!
Есть только разработка, не включенная в официальный релиз.
А для мелких проектов есть silex на основе symfony2

Dzyanis Kuzmenka      Создано: 10.7.2011, 17:01          

Всем начинающим и любителям написать своё советую Kohana3, но сам пишу на ZF. Честно признаться, ZF куда более грамотный и аккуратный. В KO большая проблема из-за разницы версий, то докачать приходиться, то исправить самому.

Александр Макаров      Создано: 11.7.2011, 16:44          

Dzyanis Kuzmenka, почему тогда не CI? Он проще и с версиями проблем нет.

Данил      Создано: 14.1.2012, 20:49          

А где Битрикс? Юми?

Cartagen      Создано: 31.1.2012, 13:40          

Хотелось-бы еще сравнение производительности посмотреть


CMS Magazine CMS Magazine
RSS-подписка комплексные решения
CMS Magazine CMS Magazine
CMS Magazine