Kohana для чайников. Файловая структура, или история одной ошибки.

kohana Во всех нормальных мануалах Kohana3 (например тут), практически в самом начале, размещена красивая схема структуры файлов фреймворка.

Конечно же это баян, но тем не менее галопом пробегусь по содержимому.
В Kohana есть три главные папки:

  • application — папка конкретного приложения, в которой разработчик хозяйничает сам
  • modules — папка модулей, в которой хозяйничают разработчики сторонних модулей
  • kohana — ядро фреймворка, в котором хозяйничают разработчики ядра


Структура файлов этих трёх папок примерно одинакова. Есть небольшие различия, но не в них суть

Kohana-modulesГлавная суть в том, что написанный вами класс можно разместить в любой их этих папок! Только нужно помнить о приоритетах поиска.

При обращении к классу сначала будет выполнен поиск класса в папке application, затем в modules, затем в kohana.

Зачем это сделано
================

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

Например если вас не устраивает базовый класс фреймворка — не спешите его исправлять прямо на месте. Со следующим обновлением ваше исправление улетит в тартарары. Лучше скопируйте этот файл в аналогичное место, но в каталоге application. И поскольку application имеет больший приоритет при поиске класса — ваш файл будет использован, а родной класс фреймворка будет проигнорирован.

История одной ошибки
==============================
Ох ведь не зря этот пункт документации разместили прям в самом начале! Они знали что я об него споткнусь, не смотря на всю его простоту:

Я в своём приложении использую модуль Auth, он в свою очередь использует таблицу users и свою довольно навороченную модель modules/auth/classes/model/user . Всё у меня было хорошо, пока я не захотел собственноручно залезть в таблицу users и создал, как положено, свою простую ORM-модель application/classes/model/user.

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

А ведь и свою модель можно было не создавать, а спокойно использовать модель модуля Auth!

Ещё раз убедился, что банальные вещи очень часто оказываются очень важными.

На этом заканчиваю баянистую тему по поводу очередной банальности =)

Kohana для чайников. Файловая структура, или история одной ошибки.: 2 комментария

  1. IceDragon

    Имхо достаточно просто наследовать класс и менять (перегружать) как надо.

Комментарии запрещены.