Kohana PHP → Переходим на Kohana 3. Часть 1
Если вы знакомы с PHP-фреймворком Kohana PHP и следите за его изменениями, то
вам наверно уже известно, что на финишную прямую уже вышла 3-я версия этого замечательного фреймворка (на данный момент
доступнен Release Candidate 2.1) и в ближайшее время планируется финальная версия. Kohana 3 - это сильно модифицированная
версия Kohana 2, поэтому все приложения, работающие на 2-й версии при переходе на 3-ю потребуют немалых изменений кода.
Эта статья призвана описать произошедшие изменения в фреймворке и помочь разобраться с новым API. Так как финальная версия API еще не "зафиксирована", то некоторое из того что здесь описано, может измениться к моменту релиза. Итак, чем же отличается API 2-й версии Kohana от 3-й?
В HMVC-среде основной запрос может порождать другие запросы с помощью нового класса Request. Это очень мощная и гибкая система, которая позволяет создавать приложение в очень модульном стиле. Но чтобы использовать потенциал HMVC на полную можность, необходимо понимать как он устроен, поэтому я рекомендую ознакомиться с материалами по этой теме.
Надо заметить, что использование HMVC в Kohana3 совсем необязательно, и традиционный шаблон MVC будет работать так же как и в предыдущих версиях.
Bootstrap-файл отвечает за настройку рабочей среды Kohana, определение загрузчика (autoloader) по умолчанию, установки параметров кеширования, кодировки, профилирования и других системных настроек, и, наконец, обработка запроса.
Разработчики могут вносить изменения в Bootstrap-файл, изменяя логику работы приложения. Это дает очень мощный слой конфигурации приложения, полностью контролирующий внутреннее поведение приложения. Кроме того, модули также имеют собственные Bootstrap-файлы, что позволяет им изменять настройки под свои нужды.
В связи с появлением Bootstrap-файлов библиотека событий устарела и больше не нужна. События использовались для вставки своего кода в процесс инициализации приложения. Как вы уже наверно догадались, Bootstrap-файлы избавляют нас от этой необходимости. При желании все же можно портировать библиотеку событий их 2-й версии, но в этом нет никакого смысла кроме привычки.
Способ, которым Kohana загружает файлы также был изменен. Все классы теперь находятся внутки папки /classes в каталогах system, modules и application. Используется новое соглашение об именовании классов, которое упрощает идентификацию и определение местоположения файлов классов. Классы по прежнему используют знак подчеркивания (_) в названии, но немного по-другому.
Теперь классы разделяются больше по их местоположению, нежели по типу. Класс контроллера, к примеру, изменился с Welcome_Controller на Controller_Welcome. Это потому что контроллер Welcome находится в каталоге
Хелперы (helpers) и библиотеки (libraries) остались, но они были приведены к более унифицированному виду. Хороший пример — библиотека Validation (system/libraries/Validation.php) и хелпер valid (system/helpers/valid.php). Вместо них теперь существует единый класс Validate, в который включены методы их обоих классов — статические методы хелпера и методы библиотеки.
Все контроллеры теперь находятся в папке controller (application/classes/controller) в каталоге приложения.
В следующей части будет рассказано о новом классе Request и классе Controller
Эта статья призвана описать произошедшие изменения в фреймворке и помочь разобраться с новым API. Так как финальная версия API еще не "зафиксирована", то некоторое из того что здесь описано, может измениться к моменту релиза. Итак, чем же отличается API 2-й версии Kohana от 3-й?
HMVC vs. MVC
В Kohana 3 представлен совершенно новый шаблон проектирования Hierarchical-Model-View-Controller (Иерархический-Модель-Вид-Контроллер). Этот шаблон похож на Model-View-Controller (Модель-Вид-Контроллер), который применен в Kohana 2.x, с некоторыми изменениями. В предыдущих версиях Коханы для обработки запроса использовался router (маршрутизатор), который анализировал запрос и вызывал нужный метод соответствующего контроллера и передавал ему необходимые параметры. Контроллер обрабатывал запрос и передавал ответ клиенту, все это выполнялось "прямолинейно" по четко определенной схеме.В HMVC-среде основной запрос может порождать другие запросы с помощью нового класса Request. Это очень мощная и гибкая система, которая позволяет создавать приложение в очень модульном стиле. Но чтобы использовать потенциал HMVC на полную можность, необходимо понимать как он устроен, поэтому я рекомендую ознакомиться с материалами по этой теме.
Надо заметить, что использование HMVC в Kohana3 совсем необязательно, и традиционный шаблон MVC будет работать так же как и в предыдущих версиях.
Начальная загрузка приложения (Bootstrap), конфигурация и события
Bootstrap-файл приложения был перенесен из каталога system в каталог application. Сделано это было по той причине, что в этом файле конфигурируется большинство настроек приложения, в то время как в предыдущих версиях (2.x) основные настройки задавались в главном файле настроек config.php. Людям, знакомым с Zend Framework, известна такая практика.Bootstrap-файл отвечает за настройку рабочей среды Kohana, определение загрузчика (autoloader) по умолчанию, установки параметров кеширования, кодировки, профилирования и других системных настроек, и, наконец, обработка запроса.
Разработчики могут вносить изменения в Bootstrap-файл, изменяя логику работы приложения. Это дает очень мощный слой конфигурации приложения, полностью контролирующий внутреннее поведение приложения. Кроме того, модули также имеют собственные Bootstrap-файлы, что позволяет им изменять настройки под свои нужды.
В связи с появлением Bootstrap-файлов библиотека событий устарела и больше не нужна. События использовались для вставки своего кода в процесс инициализации приложения. Как вы уже наверно догадались, Bootstrap-файлы избавляют нас от этой необходимости. При желании все же можно портировать библиотеку событий их 2-й версии, но в этом нет никакого смысла кроме привычки.
Структура классов
В Kohana 3 изменена структура классов, поэтому приложения, портированные из версии 2.x определенно потребуют изменений в этом плане. Больше нет старых папок libraries, helpers и controllers. Вместо них теперь используется папка classes.Способ, которым Kohana загружает файлы также был изменен. Все классы теперь находятся внутки папки /classes в каталогах system, modules и application. Используется новое соглашение об именовании классов, которое упрощает идентификацию и определение местоположения файлов классов. Классы по прежнему используют знак подчеркивания (_) в названии, но немного по-другому.
Теперь классы разделяются больше по их местоположению, нежели по типу. Класс контроллера, к примеру, изменился с Welcome_Controller на Controller_Welcome. Это потому что контроллер Welcome находится в каталоге
classes/controller (application/classes/controller/welcome.php). Все основные файлы фреймворка имеют
префикс Kohana (например, system/classes/kohana/validate.php и т.д. называется Kohana_Validate). Традиционные классы
находятся непосредственно в папке classes, что позволяет использовать Validate::factory() вместо
Kohana_Validate::factory(), хотя второй вариант тоже будет работать. Если вы внимательно посмотрите на
содержимое каталога system и названия классов, находящихся в ней, вы довольно быстро поймете принцип именования классов.
В Zend Framework используется такой же принцип, поэтому пользователи этого фреймворка уже знакомы с этим.
Хелперы (helpers) и библиотеки (libraries) остались, но они были приведены к более унифицированному виду. Хороший пример — библиотека Validation (system/libraries/Validation.php) и хелпер valid (system/helpers/valid.php). Вместо них теперь существует единый класс Validate, в который включены методы их обоих классов — статические методы хелпера и методы библиотеки.
Все контроллеры теперь находятся в папке controller (application/classes/controller) в каталоге приложения.
В следующей части будет рассказано о новом классе Request и классе Controller
