Kohana, ранее Blue Flame, это PHP5 веб-фреймворк с открытым кодом, который использует архитектурную модель HMVC (Hierarchical Model View Controller - Иерархические Модель-Контроллер-Вид). Его цели — быть безопасным, легким и простым в использовании[3].
Электронный журнал для веб-разработчиков PHP Inside признал Kohana «выбором редакции … за архитектуру, быстроту и сообщество»[4]
История
Проект Kohana был создан как ветвь PHP фреймворка CodeIgniter под именем Blue Flame[5]. Главной причиной форка был переход к более открытой для общественности модели разработки, потому, что многие пользователи были недовольны скоростью разработки и исправления ошибок в CodeIgniter. Rick Ellis — создатель и владелец CodeIgniter — был счастлив видеть форк своего проекта, но помогать отказался; он подтолкнул новый проект к созданию собственной документации и посоветовал переименовать проект.[6] В июле 2007 Blue Flame был переименован в Kohana для того, чтобы избежать проблем с авторскими правами в будущем.[7]
Название Kohana было выбрано, когда разработчики начали просматривать словари коренных американцев для того, чтобы выбрать слово, не нарушающее авторские права. Kohana на языке Сиу значит «быстрый». Также в японском языке имеет значение «маленький цветок», а на украинском «любимая» и имя известной косатки (Kohana) — все эти значения не имеют отношения к названию.
Особенности
- Высокая безопасность
- Хорошо прокомментированный код и встроенные средства отладки и профилирования
- Прост в понимании
- Использует парадигму MVC
- Поддержка UTF-8
- Очень легко расширяем
- Распространяется по лицензии BSD
Технологии
Версии
Ветви разработки
В настоящее время параллельно разрабатываются три ветви[8]:
- Ветвь 3.1.x. Текущая стабильная версия 3.1.4. Официально поддерживалась до февраля 2012 г. Однако, т.к. версия 3.1.4 была выпущена в июле 2011 г., ожидается еще как минимум один минорный релиз с закрытием известных багов.
- Ветвь 3.2.x. Рекомендуется для вновь разрабатываемых приложений[8]. Текущая стабильная версия 3.2.0. Официальная поддержка до июля 2012 г.
- Ветвь 3.3.x. На данный момент выпущены RC1 и RC2. В данной ветке продолжена переработка механизма "запрос-ответ" (Request/Response), особенно в части HMVC-запросов.
Различия между версиями
Отличие Kohana от CodeIgniter
Иллюстрация наследования ресурсов
- Строгое PHP5 ООП. Предполагает много плюсов: защита видимости, автоматическая подгрузка классов, перегрузка свойств и методов, интерфейсы, абстрактные классы, и применение паттерна одиночка (singleton).
- Kohana присоединилась к инициативе [GoPHP5]. Все релизы после 2.2 будут соответствовать этим правилам.
- Сохранен стиль CodeIgniter. Любой, кто использовал CodeIgniter, быстро поймет структуру Kohana.
- Управляется сообществом, не компанией. Kohana управляется дискуссиями, идеями и кодом сообщества. Разработчики Kohana из всех уголков света, каждый со своим собственным талантом. Это позволяет ускорить и сделать более гибким цикл разработки в котором реагирование на проблемы занимает часы, вместо дней или месяцев.
- Массивы GET, POST, COOKIE, и SESSION работают как предполагается. Kohana не ограничивает доступ к глобальным переменным, но предоставляет ту же фильтрацию и XSS защиту, что и CodeIgniter.
- Каскадные ресурсы, модули и наследование. Контроллеры, модели, библиотеки, хелперы, и виды могут быть загружены из любого места вашей системы, приложения, или модуля. Опции конфигурации наследуемы и могут динамически перезаписываться каждым приложением.
- Нет конфликтов пространств имён. Суффиксы классов, как «_Controller», используются для предотвращения конфликтов пространства имён. Это позволяет пользовательским контроллерам и моделям загружаться в одно и то же время.
- Настоящая автозагрузка классов. Действует для библиотек, контроллеров, моделей, и хелперов. Это не предзагрузка, а настоящая динамическая подгрузка классов при их инициализации.
- Хелперы — статические классы, не функции. Для примера, вместо использования «form_open()», вы можете использовать «form::open()».
- Связанность драйверов библиотек и API.
- Мощный обработчик событий. В Kohana события могут быть динамически добавлены, заменены или, даже, удалены. Это позволяет вносить значительные изменения в процесс работы Kohana, без модификации существующего системного кода.
Отличие Kohana 3 от Kohana 2.х
Версии 2.х и 3 фреймворка Kohana следует рассматривать[9] как разные фреймворки. Основные отличия версии 3 по сравнению с 2.х:
- Изменена организация файловой системы. Все классы выделены в директорию classes с подкаталогами model и controller для моделей и контроллеров соответственно. Библиотеки и хэлперы в Kohana 3.x хранятся вместе и по сути теперь не отличаются друг от друга.
- Единое правило именования классов. Имя любого класса должно соответствовать директории, в которой расположен файл этого класса (например, класс Model_Foo_Bar должен располагаться в файле classes\model\foo\bar.php).
- Часть функциональности ядра вынесена в отдельные модули (например, Database, ORM), которые можно отключать.
- Больший контроль над кодом, выполняемым до загрузки фреймворка. В связи с этим из ядра фреймворка были удалены события (Events) и хуки (Hooks).
- Новый механизм роутинга.
- Значительные изменения в слоях Database и ORM.
- Можно запустить любой контроллер и получить его вывод не только по HTTP, но и прямо из кода (указав роут), минуя протокол HTTP. Это позволяет вынести независимые блоки генерируемого контента в отдельные контроллеры, а также упрощает клиент-серверное взаимодействие в AJAX[10][11].
Отличие Kohana 3.1 от Kohana 3.0
В ветке 3.1.x произошло разделение объекта Request на отдельные классы Request и Response. Кроме того, валидация теперь также распределена между классами Validation (управление ходом валидации) и Valid (набор стандартных статических правил, аналогично классу Valid в Kohana 2.3.4). Более подробно об основных изменениях можно почитать в официальной документации (англ.).
Отличие Kohana 3.2 от Kohana 3.1
Основным изменением в ветке 3.2.x стала переработка механизма работы с конфигурационными файлами. Появились классы Kohana_Config_Reader и Kohana_Config_Writer, позволяющие на их основе реализовывать собственные драйверы для работы с различными источниками данных (файлы, СУБД и т.д.). Кроме того, HTTP-кеширование, появившееся в 3.1.x, было вынесено из класса Request в отдельный класс HTTP_Cache модуля Cache.
Отличие Kohana 3.3 от Kohana 3.2
В ветке 3.3.x было принято решение о переходе на стандарт Cron-задач.
История версий
Цвет |
Описание |
Красный |
Старая версия; не поддерживается |
Жёлтый |
Старая версия; всё ещё поддерживается |
Зелёный |
Текущая версия |
Голубой |
Планируемая версия |
Название |
Версия |
Кодовое имя |
Подверсия |
Дата релиза |
Существенные изменения |
BlueFlame |
1.0 |
|
1.0 |
2007-05-31[12] |
|
Kohana |
2.0 |
Superlime |
2.0 |
2007-11-08[13] |
- Код полностью переписан, нет старого унаследованного кода[13][7]
- Прекращена совместимость с PHP4, ориентация на PHP5[7]
- Полностью объектно-ориентированный программный каркас[7]
- В поставку включены модули[7]
- Концепция каскадных ресурсов[7]
|
2.1 |
Schneefeier |
2.1.0 |
2008-02-05[13] |
- Новые библиотеки: Cache, Image, ORM, Payment
- Новые хелперы: num, expires, email, html::link(), html::breadcrumb(), arr::binary_search(), valid::standard_text(), text::widont();
- Новые модули: Auth & Forge; драйверы PostgreSQL и MySQLi
- Компрессия вывода gzip, исправления ошибок и изменения в API[14]
|
2.1.1 |
2008-02-06[13] |
- Исправлена ошибка расширения хелперов
- Добавлены английский (UK), немецкий и македонский языки[15]
|
2.1.2 |
2008-06-10 |
- Добавлена константа KOHANA_IS_WIN, которая сигнализирует о работе на платформе Windows
- Многочисленные исправления ошибок[16]
|
2.2 |
Efímera |
2.2.0 |
2008-08-08 |
- Новые библиотеки (Captcha)
- Новые хелперы (upload, format, и т.д.)
- Новые атрибуты конфигурации,
- Новые драйверы (MSSQL, PayPal Pro)
- Чистка кода, оптимизация и исправления ошибок[17]
|
2.3 |
Kernachtig |
2.3.0 |
2008-12-20 |
- Новый роутер
- Новая библиотека баз данных (object_db)
|
2.3.1 |
2009 |
2.3.2 |
2009 |
Aegolius |
2.3.3 |
2009-05-31 |
Buteo Regalis |
2.3.4 |
2009-06-05 |
2.4 |
- |
2.4-RC1 |
2009-11-19[18] |
Планировалась как логичное продолжение ветки 2.3, но ввиду выпуска версии 3.0 так и не была доведена до стабильного релиза.
|
3.0 |
renaissance |
3.0.0 |
2009-09-17[19] |
- Код полностью переписан. Нет совместимости с приложениями, написанными для 2.х
- Архитектура соответствует шаблону проектирования HMVC
- Добавлена новая функциональность ядра
- Все хелперы и библиотеки являются классами в папке classes (без директорий helpers/libraries)
|
3.0.1 |
2009-10-16[20] |
3.0.2 |
2009-11-21[21] |
3.0.3 |
2009-11-23[22] |
wyau cwningen |
3.0.4 |
2010-04-04[23] |
3.0.5 |
2010-05-25[24] |
sumar hiti |
3.0.6 |
2010-06-07[25] |
hattrick |
3.0.7 |
2010-07-11[26] |
großen jäger |
3.0.8 |
2010-09-22[27] |
nya året |
3.0.9 |
2010-12-30[28] |
Hierofalco |
3.0.10 |
2011-03-13[29] |
vespertinus |
3.0.11 |
2011-05-02[30] |
cuvierii |
3.0.12 |
2011-07-24[31] |
3.1 |
merle |
3.1.0 |
2011-02-07[32] |
- Усовершенствована работа Request/Response
- В валидацию добавлены контексты
- Удален модуль Pagination
|
aesalon |
3.1.1 |
2011-02-16 |
Hirondelle |
3.1.2 |
2011-04-14[33] |
araea |
3.1.3 |
2011-05-02[34] |
fasciinucha |
3.1.4 |
2011-07-24[35] |
3.2 |
Kolibri |
3.2.0 |
2011-07-24[36] |
- Дальнейшая доработка механизма Request/Response
- Изменен принцип работы с конфигурационными файлами (драйверы на основе классов Kohana_Config_Reader и Kohana_Config_Writer)
|
3.3 |
|
3.3.0-RC2 |
2012-04-19[37] |
- Переход на стандарт HMVC-запросов (Request)
- Более удобная система обработки исключений
- Добавлен модуль Minion
|
Примечания
- Who makes Kohana? (англ.)
- Страница загрузки Kohana (англ.)
- overview [Kohana User Guide]
- Современные PHP-фреймворки - полный список лидеров
- Kohana fork from CodeIgniter (англ.). PHP devReview() (19 июня 2007 г.). Архивировано из первоисточника 12 марта 2012.
- Форум CodeIgniter, июнь 2007 г.
- ↑ overview:history [Kohana User Guide]
- ↑ Kohana: Download
- Kohana 3.x vs 2.x
- KO3: HMVC и роутинг
- Делаем простой HMVC-виджет в Kohana3
- ↑ BlueFlame 1.0 Released! | CodeIgniter Forums
- ↑ changelog [Kohana User Guide]
- changelog:2.1 [Kohana User Guide]
- changelog:2.1.1 [Kohana User Guide]
- changelog:2.1.2 [Kohana User Guide]
- changelog:2.2 [Kohana User Guide]
- 2.4 Release Candidate 1 Released [Kohana Forums
- Kohana v3.0 Released! [Kohana Forums
- Kohana v3.0.1 Released! [Kohana Forums
- Kohana v3.0.2 Released! [Kohana Forums
- Kohana v3.0.3 Released! [Kohana Forums
- Kohana v3.0.4 Released! [Kohana Forums
- Kohana v3.0.5 Released! [Kohana Forums
- Kohana v3.0.6 Released! [Kohana Forums
- Kohana v3.0.7 Released! [Kohana Forums
- Kohana v3.0.8 Released! [Kohana Forums
- Kohana v3.0.9 Released! [Kohana Forums
- Kohana 3.1.2 & Kohana 3.0.10 Released! [Kohana Forums
- Kohana 3.1.3 & Kohana 3.0.11 Released! [Kohana Forums
- Kohana 3.2.0, 3.1.4, 3.0.12 Released! [Kohana Forums
- Kohana v3.1.0 Released! [Kohana Forums
- Kohana 3.1.2 & Kohana 3.0.10 Released! [Kohana Forums
- Kohana 3.1.3 & Kohana 3.0.11 Released! [Kohana Forums
- Kohana 3.2.0, 3.1.4, 3.0.12 Released! [Kohana Forums
- Kohana 3.2.0, 3.1.4, 3.0.12 Released! [Kohana Forums
- Kohana 3.3.0-RC2 Released [Kohana Forums
Ссылки
- Официальный сайт Kohana Web Framework (англ.)
- Страница для выбора дистрибутива (англ.)
- Документация для различных версий (англ.)
- Официальный форум Kohana Web Framework (англ.)
- Неофициальная документация для Kohana 3 (англ.)
- Cristian Gilè Kohana: The Swift PHP Framework (англ.). Net Tuts + (9 июля 2009 г.). Архивировано из первоисточника 12 марта 2012.
- Русскоязычная категория официального форума Kohana
- habrahabr.ru/blogs/kohanaphp — Kohana на Хабрахабре
- Статьи по работе с Kohana 3
- Множество различной информации по Kohana
- Уроки и документация по Kohana 3.2 (рус.)
- Русская документация Kohana 3 (рус.)
- Перевод на украинский язык документации по Kohana v3.2 (укр.)