Выбор PHP фреймворка. Сравнение CodeIgniter, Kohana, Yii.



В декабре 2008, наконец появилась релизная версия нового PHP фреймворка Yii. В 2008 году было выпущено много PHP фреймворков, но Yii наиболее интересный из них, потому что:

  • Его автор Qiang Xue, также разработчик фреймворка PRADO.
  • Это простой в использовании, хорошо организованный, полностью PHP5 совместимый фреймворк, построенный на архитектуре MVC.
  • И утверждаю, что это лучший по производительности PHP фреймворк.

Перейдем непосредственно к сравнению.

Версии фреймворков использованных в тесте:

Codeigniter 1.7.1

Kohana 2.3.1

Yii 1.0.3

Лицензия

CodeIgniter (отлично)

CI использует модифицированную BSD/Apache-style license.

Kohana (отлично)

Kohana использует новую BSD license.

Yii (отлично)

Yii использует новую BSD license.

Совместимость с различными версиями PHP

CodeIgniter

PHP >= 4.3.2 (Включая все версии PHP5).

На первый взгляд хорошо, что CI поддерживает PHP4 и PHP5. Однако если вы знакомы с ООП то знаете, что авторы пошли на компромиссы для поддержки PHP4. Это одна из главных причин по которой разработчики стали переходить на другие фреймворки.

Если вы решили использовать CI в своих проектах, рекомендую настроить ваше приложение на использование только PHP5 с нормальным ООП.

Kohana

PHP >= 5.2.3

Yii

PHP >= 5.1.0

Поддерживаемые базы данных

CodeIgniter (отлично)

MySQL

MySQLi

PostgreSQL

MSSQL

Oracle

SQLite

ODBC

Kohana (хорошо)

MySQL

MySQLi

PostgreSQL

MSSQL

PDOSqlite

Yii (отлично)

Поддерживаются все БД поддерживаемые PDO (PHP Data Object).

Сообщество

CodeIgniter (отлично)

Отличное, сильное и активное комьюнити. CI имеет хороший форум, bug tracker и wiki.

Kohana (хорошо)

Комьюнити поменьше чем у Codeigniter. Kohana может предложить нам форум, Trac и IRC.

Yii (хорошо)

Самый молодой фреймворк и по этому имеет самое маленькое комьюнити пользователей, но оно активно развивается по мере увеличения интереса к фреймворку.

Yii предлагает нам форум, проект хостящийся на Google Code и раздел докоментации с возможностью комментирования.

Документация

CodeIgniter (отлично)

Лучшая документация из всех представленных в данном обзоре фреймворокв. Просто всеобъемлющая, простая для понимания и актуальная документация.

Kohana (хорошо)

Документация явно слабее чем у CI. В настоящее время она охватывает большую часть аспектов разработки, однако некоторые части документации являются устаревшими, а иногда и неправильными.

Yii (плохо)

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

Tutorial / Примеры

CodeIgniter (хорошо)

В wiki приличное количество статей с примерами, если этого мало есть замечательный форум в котором можно найти решение практически любой задачи.

Kohana (хорошо)

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

Yii (хорошо)

Yii имеет Cookbook раздел, который содержит подборку учебных пособий. Как всегда если мало руководства, есть форум.

MVC

Все три фреймворка используют архитектуру MVC (Model-View-Controller).

CodeIgniter

Помимо стандартной архитектуры MVC предлагает: библиотеки, плагины, хелперы и хуки.

Kohana

Помимо стандартной архитектуры MVC предлагает: модули, события, библиотеки, хелперы, хуки.

Yii

Помимо стандартной архитектуры MVC предлагает: компоненты, модули, расширения, виджеты, хелперы.

Модульность

CodeIgniter (с помощью сторонних библиотек)

CI в стандартной поставке не поддерживает модульность, однако вы можете добавить ее сами с помощью сторонних библиотек, таких как: HMVC или Matchbox.

Kohana (отлично)

Kohana предлагает не только модули, но и имеет каскадную файловую систему выводящую модульность на новый уровень.

Yii (хорошо)

Yii с версии 1.0.3 поддерживает модульность.

Конфигурация

(хорошо)

CodeIgniter имеет довольно хорошую конфигурационную систему.

Kohana (отлично)

Kohana имеет отличную конфигурационную систему.

Yii (хорошо)

Yii имеет довольно хорошую конфигурационную систему.

Класс абстракции БД и ORM

CodeIgniter (хорошо)

CodeIgniter обладает очень мощным классом для работы с БД, который поддерживает как традиционные структуры, так и шаблоны Active Record. Но не имеет встроенной поддержки ORM.

Kohana (отлично)

Одним из важнейших средством для уменьшения времени разработки проектов для меня является ORM. Kohana предлагает легкую, но достаточно функциональную реализацию ORM. Она не столь сложная как Rails Active Record, но работать с ней достаточно удобно. Особенно люблю простоту обновления many-to-many записей.

Yii (хорошо)

В Yii более сложный синтаксис объявления модели отношений, чем в Kohana. Тем не менее, она так же предлагает более мощный функционал.

Авторизация и ACL

CodeIgniter (с помощью сторонних библиотек)

CI имеет несколько сторонних библиотек реализующих функционал ACL. Подробней можно почитать на форуме.

Kohana (хорошо)

Kohana имеет встроенный модуль авторизации, а также есть несколько сторонних разработок.

Yii (отлично)

Yii имеет встроенный модуль авторизации и аутентификации, достаточно гибкий и простой в использовании.

Валидация

CodeIgniter (отлично)

CodeIgniter form validation library.

Kohana (отлично)

Kohana validation library.

Yii (отлично)

Yii’s использвание валидаторов. Все системные валидаторы хранятся в директории «validators» в главной директории фреймворка.

Кеширование

Codeigniter (частично)

Позволяет кешировать только страницы полностью.

Kohana (хорошо)

Kohana обладает чуть более продвинутой системой кеширования, которая поддерживает файлы, SQLite, APC, eAccelerator, memcache и XCache based caching.

Yii (хорошо)

Как и Kohana, Yii поддерживает memcache, APC, Xcache и основанное на БД кеширование страниц целиком и по частям.

Сессии

Codeigniter (хорошо)

Класс сессий в CI достаточно хорош, он поддерживает хранение и обработку данных.

Kohana (хорошо)

Аналогично CI, Kohana предлагает хорошую библиотеку по работе с сессиями.

Yii (отлично)

Yii предоставляет более мощный и гибкий класс по работе с сессиями. К сожалению он в данный момент плохо задокументирован.

Logging \ Debugging

Codeigniter (хорошо)

CI имеет простой класс обработки ошибок, а так же profiler класс.

Kohana (отлично)

Имеет хороший logging класс, а так же более гибкий профайлер.

Yii (отлично)

Yii так же имеет классы обработки ошибок и профайлер, такие же мошные и гибкие как в Kohana.

Шаблоны

Все три фреймворка используют nativе’ный PHP в шаблонах.

Codeigniter (поддерживает альтернативный синтаксис)

CI также предоставляет альтернативный парсер шаблонов, template parser class.

Kohana (поддерживает альтернативный синтаксис с помощью сторонних библиотек)

Kohana не имеет встроенной поддержки альтернативного синтаксиса шаблонов. Но ее можно добавить с помощью сторонних библиотек, например Temper.

Yii (поддерживает альтернативный синтаксис)

Yii также поддерживает альтернативный синтаксис шаблонов, заимствованный из PRADO.

Хелперы

Набор функций, для решения определенных задач.

Codeigniter (отлично)

Имеет 21 встроенный хелпер.

Kohana (отлично)

В Kohana включено 19 хелперов.

Yii (частично)

Встроено 6 хелперов.

Встроенные JavaScript библиотеки

Codeigniter (нет)

Нет встроенных библиотек.

Kohana (нет)

Нет встроенных библиотек.

Yii (Да)

Yii поставляется с библиотекой jQuery. А также с рядом полезных классов таких как авто-дополнение.

Web сервисы

Рекомендую интегрировать Zend Framework для работы с веб сервисами.

Codeigniter (ограничено)

Есть XML-RPC класс.

Kohana (нет)

Нет поддержки веб сервисов.

Yii (ограничено)

Поддерживается SOAP.

Многоязычность

Codeigniter (ограничено)

В CI встроен простой класс для поддержки многоязычности.

Kohana (плохо)

Kohana предоставляет базовый класс по работе с локалями и многоязычностью.

Yii (хорошо)

Yii содержит более полный класс поддержки многоязычности.

Unit Testing

Я рекомендую использовать SimpleTest или PHPUnit для тестирования.

Codeigniter (ограничено)

CI имеет очень простой класс для тестирования.

Kohana (нет)

Нет встроенной поддержки Unit тестирования.

Yii (нет)

Так же как и в Kohana отсутствует встроенная поддержка Unit тестирования.

Вердикт

На мой взгляд нет лучшего фреймворка, да и целью статьи не было его определение, а скорее анализ плюсов и минусов каждого. А каким пользоваться решать вам. В данный момент я использую CI и присматриваюсь к Kohana, планирую переносить разработки на него.

Так же можете почитать мой обзор фреймворка CodeIgniter.



Теги: , , , ,

Комментарии

  1. CodeIgniter

    PHP >= 4.3.2 (Включая все версии PHP5).

    На первый взгляд хорошо, что CI поддерживает PHP4 и PHP5. Однако если вы знакомы с ООП то знаете, что авторы пошли на компромиссы для поддержки PHP4. Это одна из главных причин по которой разработчики стали переходить на другие фреймворки.

    Ммм… А что за компромиссы? Чем они мешают? Пока знаю только один минус — нельзя сделать синглетон, но я еще не сталкивался с задачей, где без него никак…

    Reply

    dewid Reply:


    parent::__construct;

    Reply

  2. в связи с появлением новых версий Kohana и Yii интересно было бы почитать обновленный обзор

    Reply

  3. Да. У Yii коммунити переросло кохановское и есть полноценный сайт на русском языке.
    Документация Yii подтянулась, добавились рецепты(переведенные на русский).
    Unit testing уже есть.
    Множество расширений.

    Чем не фреймворк №1?

    Reply

  4. Да для меня лично уже давно номер 1

    Reply

  5. Владимир

    Я за Yii! Отличный фреймворк. Использую недавно, очень понравилась генерация кода и ряд других фич. Раньше использовал cakePHP, хороший фреймворк, но yii ни чем не хуже и я бы сказал лучше.

    Reply

Оставить комментарий