Kohana

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

Kohana (вимовляється «кохана» або «когана»; раніша назва — Blue Flame) — веб-фреймворк на мові PHP з відкритим кодом, який використовує архітектурну модель MVC (англ. Model View Controller). Його мета — бути безпечним, легким і простим у використанні.

Історія[ред. | ред. код]

Проект Kohana був створений як відгалуження PHP-фреймворку CodeIgniter під назвою Blue Flame.[1] Головною причиною форку був перехід до відкритішої для громадськості моделі розробки, оскільки багато користувачів були невдоволені швидкістю розробки і виправлення помилок у CodeIgniter. Рік Елліс (англ. Rick Ellis) — творець і власник CodeIgniter — радо зустрів відгалуження від свого проекту, але допомагати відмовився; він підштовхнув новий проект до створення власної документації і порадив перейменувати проект.[2] В липні 2007 Blue Flame був перейменований в Kohana для того, щоб уникнути проблем з авторськими правами в майбутньому.

Назва «Kohana» було вибрано, коли розробники почали переглядати словники корінних американців для того, щоб вибрати слово, яке не порушувало б авторського права. Kohana мовою Сіу означає «швидкий». Українською вимова назви Kohana — «кохана» — означає та, яку кохають, палко люблять. Також в японській мові має значення «маленька квітка», та ім'я відомої касатки (Kohana) — всі ці значення не мають відношення до назви.

Особливості[ред. | ред. код]

  • Висока безпека
  • Екстремальна легкість
  • Легкий у розумінні
  • Використовує MVC-модель
  • Повна сумісність з UTF-8
  • Дуже легко розширюється

Технології[ред. | ред. код]

Версії[ред. | ред. код]

Гілки розробки[ред. | ред. код]

В даний час паралельно розробляються три гілки:[3]

  • Гілка 3 .1. X. Поточна стабільна версія 3.1.4. Офіційно підтримувалася до лютого 2012 р. Проте, оскільки версія 3.1.4 була випущена в липні 2011 р., очікується ще як мінімум один мінорний реліз із закриттям відомих багів.
  • Гілка 3 .2. X. Рекомендується для створення нових програм[3]. Поточна стабільна версія 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 слід розглядати[4] як різні фреймворки. Основні відмінності версії 3 в порівнянні з 2.х:

  • Змінено організацію файлової системи. Всі класи виділено в директорію класів з підкаталогами model і controller для моделей та контролерів відповідно. Бібліотеки та хелпери в Kohana 3.x зберігаються разом і по суті тепер не відрізняються один від одного.
  • Єдине правило іменування класів. Ім'я будь-якого класу має відповідати директорії, в якій розташований файл цього класу (наприклад, клас Model_Foo_Bar повинен розташовуватися у файлі classes\model\foo\bar.php).
  • Частина функціональності ядра винесена в окремі модулі (наприклад, база даних, ORM), які можна відключати.
  • Кращий контроль над кодом, що виконуються до завантаження фреймворку. У зв'язку з цим з ядра фреймворку були видалені події (Events) і хукі (Hooks).
  • Новий механізм роутінга.
  • Значні зміни в рівнях бази даних і ORM.
  • Можна запустити будь-який контролер і отримати його виведення не тільки по HTTP, але і прямо з коду (зазначивши роути), минаючи протокол HTTP. Це дозволяє винести незалежні блоки генеруємого контенту в окремі контролери, а також спрощує клієнт-серверну взаємодію в AJAX[5][6].

Відмінність 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[7]
  • Початковий реліз
  • Форк від CodeIgniter 1.5.4 (попередній реліз, ревізія 566 в svn)[7]
Kohana 2.0 superlime 2.0 2007-11-08[8]
  • Код повністю переписаний, немає старого успадкованого коду[8][9]
  • Припинено сумісність з PHP4, орієнтація на PHP5[9]
  • Повністю об'єктно-орієнтований програмний каркас[9]
  • У дистрибутив включені модулі[9]
  • Концепція каскадних ресурсів[9]
2.1 Schneefeier 2.1.0 2008-02-05[8]
  • Нові бібліотеки: 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[10]
2.1.1 2008-02-06[8]
  • Виправлена помилка розширення хелперів
  • Додано англійську (UK), німецьку і македонську мови[11]
2.1.2 2008-06-10
  • Додана константа KOHANA_IS_WIN, яка сигналізує про роботу на платформі Windows
  • Численні виправлення помилок[12]
2.2 Efímera 2.2.0 2008-08-08
  • Нові бібліотеки (Captcha)
  • Нові хелпери (upload, format, і т. д.)
  • Нові атрибути конфігурації
  • Нові драйвери (MSSQL, PayPal Pro)
  • Чистка коду, оптимізація і виправлення помилок[13]
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
  • Нова бібліотека для роботи з базами даних
  • Оновлення в ORM
  • Додано кешування для виглядів(англ. views)
3.0 Renaissance 3.0.0 2009-09-17
3.0.1 2009-10-16
3.0.2 2009-11-21
3.0.3 2009-11-23
wyau cwningen 3.0.4 2010-04-04
3.0.5 2010-04-04
sumar hiti 3.0.6 2010-06-07
hattrick 3.0.7 2010-07-11
großen jäger 3.0.8 2010-09-22
nyaåret 3.0.9 2010-12-30
Hierofalco 3.0.10 2011-03-13
vespertinus 3.0.11 2011-05-02
cuvierii 3.0.12 2011-07-24
3.1 merle 3.1.0 2011-02-07
  • Удосконалена робота Request/Response
  • В валідацію додані контексти
  • Видалено модуль Pagination
aesalon 3.1.1 2011-02-16
Hirondelle 3.1.2 2011-04-14
araea 3.1.3 2011-05-02
fasciinucha 3.1.4 2011-07-24
3.2 Kolibri 3.2 2011-07-24
  • Подальше допрацювання механізму Response
  • Змінено принцип роботи з конфігураційними файлами (драйвери на основі класів Kohana_Config_Reader і Kohana_Config_Writer)
3.3 Badius 3.3 2012-10-23
  • Перехід на стандарт PSR-0
  • Підвищення ізольованості HMVC-запитів (Request)
  • Зручніша система обробки виключень
  • Додано модуль Minion

Примітки[ред. | ред. код]

  1. Kohana fork from CodeIgniter (англійською). PHP devReview(). 2007-07-19. Архів оригіналу за 2012-03-12. Процитовано 2010-05-17. 
  2. Форум CodeIgniter Архівовано 25 березень 2010 у Wayback Machine., червень 2007 р.
  3. а б Kohana: Download. Архів оригіналу за 16 червень 2012. Процитовано 3 липень 2012. 
  4. Kohana проти 2.x 3.x. Архів оригіналу за 6 серпень 2012. Процитовано 28 липень 2012. 
  5. КО3: HMVC і роутинг
  6. Робимо простий HMVC-віджет в Kohana3
  7. а б BlueFlame 1.0 Released!. Архів оригіналу за 1 вересень 2010. Процитовано 17 травень 2010.  Текст « CodeIgniter Forums] » проігноровано (довідка)
  8. а б в г [https://web.archive.org/web/20100528092951/http://docs.kohanaphp.com/changelog Архівовано 28 травень 2010 у Wayback Machine. changelog [Kohana User Guide]][недоступне посилання з лютий 2019]
  9. а б в г д Помилка цитування: Неправильний виклик <ref>: для виносок history не вказаний текст
  10. [https://web.archive.org/web/20090702030212/http://docs.kohanaphp.com/changelog/2.1 Архівовано 2 липень 2009 у Wayback Machine. changelog: 2.1 [Kohana User Guide]][недоступне посилання з лютий 2019]
  11. [https://web.archive.org/web/20090702031326/http://docs.kohanaphp.com/changelog/2.1.1 Архівовано 2 липень 2009 у Wayback Machine. changelog: 2.1.1 [Kohana User Guide]][недоступне посилання з лютий 2019]
  12. [https://web.archive.org/web/20090531161805/http://docs.kohanaphp.com/changelog/2.1.2 Архівовано 31 травень 2009 у Wayback Machine. changelog: 2.1.2 [Kohana User Guide]][недоступне посилання з лютий 2019]
  13. [https://web.archive.org/web/20100616184921/http://docs.kohanaphp.com/changelog/2.2 Архівовано 16 червень 2010 у Wayback Machine. changelog: 2.2 [Kohana User Guide]][недоступне посилання з лютий 2019]

Посилання[ред. | ред. код]