Во всех нормальных мануалах Kohana3 (например тут), практически в самом начале, размещена красивая схема структуры файлов фреймворка.
Конечно же это баян, но тем не менее галопом пробегусь по содержимому.
В Kohana есть три главные папки:
- application – папка конкретного приложения, в которой разработчик хозяйничает сам
- modules – папка модулей, в которой хозяйничают разработчики сторонних модулей
- kohana – ядро фреймворка, в котором хозяйничают разработчики ядра
Структура файлов этих трёх папок примерно одинакова. Есть небольшие различия, но не в них суть
Главная суть в том, что написанный вами класс можно разместить в любой их этих папок! Только нужно помнить о приоритетах поиска.
При обращении к классу сначала будет выполнен поиск класса в папке application, затем в modules, затем в kohana.
Зачем это сделано
================
Поскольку фреймворк является полностью открытым продуктом, его можно изучать и модифицировать полностью самостоятельно. Однако, при обновлении ядра все ваши изменения слетят. Логично складывать обновления в той области, где вы сами себе хозяин – в папке application например.
Например если вас не устраивает базовый класс фреймворка – не спешите его исправлять прямо на месте. Со следующим обновлением ваше исправление улетит в тартарары. Лучше скопируйте этот файл в аналогичное место, но в каталоге application. И поскольку application имеет больший приоритет при поиске класса – ваш файл будет использован, а родной класс фреймворка будет проигнорирован.
История одной ошибки
==============================
Ох ведь не зря этот пункт документации разместили прям в самом начале! Они знали что я об него споткнусь, не смотря на всю его простоту:
Я в своём приложении использую модуль Auth, он в свою очередь использует таблицу users и свою довольно навороченную модель modules/auth/classes/model/user . Всё у меня было хорошо, пока я не захотел собственноручно залезть в таблицу users и создал, как положено, свою простую ORM-модель application/classes/model/user.
Своей цели я может и достиг, но из-за приоритета папки application модуль Auth теперь начал использовать мою модель для работы с таблицей. А в ней не было кучи функций. Вот тут-то я и огрёб кучу ошибок, которую не мог разобрать недели две.
А ведь и свою модель можно было не создавать, а спокойно использовать модель модуля Auth!
Ещё раз убедился, что банальные вещи очень часто оказываются очень важными.
На этом заканчиваю баянистую тему по поводу очередной банальности =)
Посты по теме:
RSS-подписка
Имхо достаточно просто наследовать класс и менять (перегружать) как надо.
для коханы 3