Kohana

Эта статья находится на начальном уровне проработки, в одной из её версий выборочно используется текст из источника, распространяемого под свободной лицензией
Материал из энциклопедии Руниверсалис
Kohana
Логотип программы Kohana
Тип Фреймворк для создания веб-приложений
Разработчик Kohana Team[1]
Написана на PHP
Операционная система Кроссплатформенный
Последняя версия 3.3.6[2] (25 июля 2016)
Лицензия BSD
Сайт kohanaframework.org

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 на языке Сиу значит «быстрый».

В апреле 2014 года главный разработчик shadowhand заявил,[8] что развитие проекта завершено, однако фреймворк продолжает разрабатываться и поддерживаться сообществом[9], а на официальном сайте продолжают выходить обновления.

4 февраля 2017 года проект был закрыт, главный разработчик "shadowhand" сообщил об этом на сайте фразой "Kohana is DEAD".

После закрытия проекта участники сообщества рассматривали различные варианты фреймворков для миграции, и как выяснилось, любая миграция была бы очень трудной. Поэтому участники сообщества создали форк проекта, который был назван Koseven. Koseven может работать в качестве замены для движка Kohana в проектах, которые до сих пор его используют. Основная цель проекта это исправление ошибок и поддержка новых версий PHP, в то время, как новый функционал рекомендуется добавлять через расширения.[10]

Особенности

  • Высокая безопасность
  • Хорошо прокомментированный код и встроенные средства отладки и профилирования
  • Прост в понимании
  • Использует парадигму HMVC
  • Поддержка UTF-8
  • Очень легко расширяем
  • Распространяется по лицензии BSD

Технологии

Версии

Ветви разработки

В настоящее время параллельно разрабатываются три ветви[11]:

  • Ветвь 3.1.x. Последняя стабильная версия 3.1.5 (поддержка закончена).
  • Ветвь 3.2.x. Последняя стабильная версия 3.2.2. (поддержка закончена).
  • Ветвь 3.3.x. Рекомендуется для вновь разрабатываемых приложений[11]. Текущая стабильная версия 3.3.0. Официальная поддержка до ноября 2013 г. В данной ветке продолжена переработка механизма «запрос-ответ» (Request/Response), особенно в части HMVC-запросов, изменения в роутинге (фильтры, см. #4388 (англ.))

Различия между версиями

Отличие 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 следует рассматривать[12] как разные фреймворки. Основные отличия версии 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[13][14].

Отличие 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 было принято решение о переходе на стандарт PSR-0 (англ.). В связи с этим все имена каталогов и файлов классов должны начинаться с большой буквы. Кроме того, осуществлен целый ряд изменений по повышению изоляции HMVC-запросов, обработке ошибок выполнения запросов и т. д. Добавлен новый модуль Minion для выполнения Cron-задач.

История версий

Цвет Описание
Красный Старая версия; не поддерживается
Жёлтый Старая версия; всё ещё поддерживается
Зелёный Текущая версия
Голубой Планируемая версия
Название Версия Кодовое имя Подверсия Дата выпуска Существенные изменения
BlueFlame 1.0 1.0 2007-05-31[15]
  • Первоначальный релиз
  • Форк от CodeIgniter 1.5.4 (предварительный релиз, ревизия 566 в svn)[15]
Kohana 2.0 Superlime 2.0 2007-11-08[16]
  • Код полностью переписан, нет старого унаследованного кода[7][16]
  • Прекращена совместимость с PHP4, ориентация на PHP5[7]
  • Полностью объектно-ориентированный программный каркас[7]
  • В поставку включены модули[7]
  • Концепция каскадных ресурсов[7]
2.1 Schneefeier 2.1.0 2008-02-05[16]
  • Новые библиотеки: 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[17]
2.1.1 2008-02-06[16]
  • Исправлена ошибка расширения хелперов
  • Добавлены английский (UK), немецкий и македонский языки[18]
2.1.2 2008-06-10
  • Добавлена константа KOHANA_IS_WIN, которая сигнализирует о работе на платформе Windows
  • Многочисленные исправления ошибок[19]
2.2 Efímera 2.2.0 2008-08-08
  • Новые библиотеки (Captcha)
  • Новые хелперы (upload, format, и т. д.)
  • Новые атрибуты конфигурации,
  • Новые драйверы (MSSQL, PayPal Pro)
  • Чистка кода, оптимизация и исправления ошибок[20]
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[21]

Планировалась как логичное продолжение ветки 2.3, но ввиду выпуска версии 3.0 так и не была доведена до стабильного релиза.

3.0 renaissance 3.0.0 2009-09-17[22]
  • Код полностью переписан. Нет совместимости с приложениями, написанными для 2.х
  • Архитектура соответствует шаблону проектирования HMVC
  • Добавлена новая функциональность ядра
  • Все хелперы и библиотеки являются классами в папке classes (без каталогов helpers/libraries)
3.0.1 2009-10-16[23]
3.0.2 2009-11-21[24]
3.0.3 2009-11-23[25]
wyau cwningen 3.0.4 2010-04-04[26]
3.0.5 2010-05-25[27]
sumar hiti 3.0.6 2010-06-07[28]
hattrick 3.0.7 2010-07-11[29]
großen jäger 3.0.8 2010-09-22[30]
nya året 3.0.9 2010-12-30[31]
Hierofalco 3.0.10 2011-03-13[32]
vespertinus 3.0.11 2011-05-02[33]
cuvierii 3.0.12 2011-07-24[34]
3.1 merle 3.1.0 2011-02-07[35]
  • Усовершенствована работа Request/Response
  • В валидацию добавлены контексты
  • Удален модуль Pagination
aesalon 3.1.1 2011-02-16
Hirondelle 3.1.2 2011-04-14[32]
araea 3.1.3 2011-05-02[33]
fasciinucha 3.1.4 2011-07-24[34]
biarmicus 3.1.5 2012-08-31[36]
3.2 Kolibri 3.2.0 2011-07-24[34]
  • Дальнейшая доработка механизма Request/Response
  • Изменен принцип работы с конфигурационными файлами (драйверы на основе классов Kohana_Config_Reader и Kohana_Config_Writer)
Milvago 3.2.1 2012-08-27[36]
hypoleucos 3.2.2 2012-08-31[37]
3.3 badius 3.3.0 2012-10-23[38]
  • Переход на стандарт PSR-0
  • Повышение изолированности HMVC-запросов (Request)
  • Более удобная система обработки исключений
  • Добавлен модуль Minion а также модуль phpunit

Примечания

  1. Who makes Kohana? Архивировано 23 сентября 2010 года. (англ.)
  2. Страница загрузки Kohana Архивная копия от 10 февраля 2016 на Wayback Machine (англ.)
  3. overview [Kohana User Guide] Архивировано 2 октября 2008 года.
  4. Современные PHP-фреймворки — полный список лидеров. Дата обращения: 11 мая 2022. Архивировано 25 февраля 2022 года.
  5. Kohana fork from CodeIgniter (англ.) (недоступная ссылка). PHP devReview() (19 июня 2007). Архивировано 12 марта 2012 года.
  6. Форум CodeIgniter Архивировано 25 марта 2010 года., июнь 2007 г.
  7. 7,0 7,1 7,2 7,3 7,4 7,5 Kohana User Guide Архивировано 21 ноября 2009 года.  (недоступная ссылка с 16-03-2016 [2962 дня])
  8. Final releases of Kohana / Beginning of Ohanzee (недоступная ссылка). Дата обращения: 11 сентября 2014. Архивировано 11 сентября 2014 года.
  9. Репозиторий проекта на Github. Дата обращения: 13 августа 2015. Архивировано 24 февраля 2015 года.
  10. koseven: Koseven a Kohana fork compatible with PHP7. — 2017-11-28. Архивировано 9 июня 2019 года.
  11. 11,0 11,1 kohana/kohana. GitHub. Дата обращения: 16 августа 2016. Архивировано 4 октября 2016 года.
  12. Kohana 3.x vs 2.x Архивировано 1 февраля 2012 года.
  13. KO3: HMVC и роутинг. Дата обращения: 30 сентября 2016. Архивировано 7 августа 2016 года.
  14. Делаем простой HMVC-виджет в Kohana3. Дата обращения: 2 февраля 2010. Архивировано 5 декабря 2010 года.
  15. 15,0 15,1 BlueFlame 1.0 Released! | CodeIgniter Forums Архивировано 23 марта 2009 года.
  16. 16,0 16,1 16,2 16,3 changelog [Kohana User Guide] Архивировано 9 ноября 2009 года.
  17. changelog:2.1 [Kohana User Guide] Архивировано 2 июля 2009 года.
  18. changelog:2.1.1 [Kohana User Guide] Архивировано 2 июля 2009 года.
  19. changelog:2.1.2 [Kohana User Guide] Архивировано 31 мая 2009 года.
  20. changelog:2.2 [Kohana User Guide] Архивировано 20 июня 2009 года.
  21. [http://web.archive.org/web/20130328112449/http://forum.kohanaframework.org/discussion/4014/2-4-release-candidate-1-released Архивная копия от 28 марта 2013 на Wayback Machine 2.4 Release Candidate 1 Released [Kohana Forums]]
  22. [http://web.archive.org/web/20130328161906/http://forum.kohanaframework.org/discussion/3479/kohana-v3-0-released Архивная копия от 28 марта 2013 на Wayback Machine Kohana v3.0 Released! [Kohana Forums]]
  23. [http://web.archive.org/web/20130328143112/http://forum.kohanaframework.org/discussion/3787/kohana-v3-0-1-released Архивная копия от 28 марта 2013 на Wayback Machine Kohana v3.0.1 Released! [Kohana Forums]]
  24. [http://web.archive.org/web/20130328035101/http://forum.kohanaframework.org/discussion/4119/kohana-v3-0-2-released Архивная копия от 28 марта 2013 на Wayback Machine Kohana v3.0.2 Released! [Kohana Forums]]
  25. [http://web.archive.org/web/20130328132052/http://forum.kohanaframework.org/discussion/4144/kohana-v3-0-3-released Архивная копия от 28 марта 2013 на Wayback Machine Kohana v3.0.3 Released! [Kohana Forums]]
  26. [http://web.archive.org/web/20130328032053/http://forum.kohanaframework.org/discussion/5299/kohana-v3-0-4-released Архивная копия от 28 марта 2013 на Wayback Machine Kohana v3.0.4 Released! [Kohana Forums]]
  27. [http://web.archive.org/web/20130328024956/http://forum.kohanaframework.org/discussion/5821/kohana-v3-0-5-released Архивная копия от 28 марта 2013 на Wayback Machine Kohana v3.0.5 Released! [Kohana Forums]]
  28. [http://web.archive.org/web/20130328153354/http://forum.kohanaframework.org/discussion/5937/kohana-v3-0-6-released Архивная копия от 28 марта 2013 на Wayback Machine Kohana v3.0.6 Released! [Kohana Forums]]
  29. [http://web.archive.org/web/20130328163300/http://forum.kohanaframework.org/discussion/6209/kohana-v3-0-7-released Архивная копия от 28 марта 2013 на Wayback Machine Kohana v3.0.7 Released! [Kohana Forums]]
  30. [http://web.archive.org/web/20130328142923/http://forum.kohanaframework.org/discussion/6867/kohana-v3-0-8-released Архивная копия от 28 марта 2013 на Wayback Machine Kohana v3.0.8 Released! [Kohana Forums]]
  31. [http://web.archive.org/web/20130328115434/http://forum.kohanaframework.org/discussion/7699/kohana-v3-0-9-released Архивная копия от 28 марта 2013 на Wayback Machine Kohana v3.0.9 Released! [Kohana Forums]]
  32. 32,0 32,1 [http://web.archive.org/web/20130328120526/http://forum.kohanaframework.org/discussion/8418/kohana-3-1-2-kohana-3-0-10-released Архивная копия от 28 марта 2013 на Wayback Machine Kohana 3.1.2 & Kohana 3.0.10 Released! [Kohana Forums]]
  33. 33,0 33,1 [http://web.archive.org/web/20121127172241/http://forum.kohanaframework.org/discussion/8886/kohana-3-1-3-kohana-3-0-11-released Архивная копия от 27 ноября 2012 на Wayback Machine Kohana 3.1.3 & Kohana 3.0.11 Released! [Kohana Forums]]
  34. 34,0 34,1 34,2 [http://web.archive.org/web/20121127172115/http://forum.kohanaframework.org/discussion/9380/kohana-3-2-0-3-1-4-3-0-12-released Архивная копия от 27 ноября 2012 на Wayback Machine Kohana 3.2.0, 3.1.4, 3.0.12 Released! [Kohana Forums]]
  35. [http://web.archive.org/web/20130328024431/http://forum.kohanaframework.org/discussion/8024/kohana-v3-1-0-released Архивная копия от 28 марта 2013 на Wayback Machine Kohana v3.1.0 Released! [Kohana Forums]]
  36. 36,0 36,1 [http://web.archive.org/web/20120830041617/http://forum.kohanaframework.org/discussion/11041/kohana-v3-2-1-and-3-1-5-released Архивная копия от 30 августа 2012 на Wayback Machine Kohana v3.2.1 (and 3.1.5) released! [Kohana Forums]]
  37. [http://web.archive.org/web/20120923153856/http://forum.kohanaframework.org/discussion/11050/kohana-v3-2-2-released Архивная копия от 23 сентября 2012 на Wayback Machine Kohana v3.2.2 Released! [Kohana Forums]]
  38. [http://web.archive.org/web/20121026010735/http://forum.kohanaframework.org/discussion/11191/kohana-3-3-0-released Архивная копия от 26 октября 2012 на Wayback Machine Kohana 3.3.0 Released! [Kohana Forums]]

Ссылки