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!

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

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

Посты по теме:

  1. Kohana для чайников. Настраиваем базу данных
  2. Kohana для чайников. Простейший ORM
  3. Kohana для чайников. Инсталляция.
  4. Kohana для чайников. Избавляемся от index.php
  5. Kohana для чайников. Hello world.

Категории Kohana |
автор: altesack / Суббота, Апрель 24, 2010 / 2 комментов »

2 комментов

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

    для коханы 3

Ответить