6.5 KiB
Каскадная файловая система
Файловая система Kohana представляет собой иерархическая структура каталогов. Когда файл загружается, используя [Kohana::find_file], он ищется в каталогах в следующем порядке:
- Application путь
- Определён как
APPPATH
вindex.php
. Значение по-умолчанию -application
. - Module путь
- Определён как ассоциативный массив [Kohana::modules] в
APPPATH/bootstrap.php
. Поиск каждого значение массива будет произведён в том порядке, в каком порядке они определены. - System путь
- Определён как
SYSPATH
вindex.php
. Значение по-умолчанию -system
. Все основные или "core" файлы и классы располагаются в этой категории.
Файлы, находящиеся в каталогах выше уровнем, имеют приоритет над файлами, которые располагаются в таких же папках уровнем ниже, что позволяет перегружать любой файл, путём перемещения файла с таким же названием на уровень выше:
Если у Вас имеется файл представления с названием wellcome.php
, расположенный в APPPATH/views
и SYSPATH/views
, то при поиске файла с этим именем будет возвращен тот, который находится в папке APPPATH/views
(как находящийся на высшем уровне иерархической системы). Если же удалить файл в каталоге APPPATH/views
, то при очередном поиске этого файла будет вызван тот, что располагается в каталоге SYSPATH/views
.
Типы файлов
Верхний уровень каталогов application, module, и system путей, по-умолчанию имеет следующие директории:
- classes/
- Все классы, которые должны быть автоматически загружены должны располагаться тут. Это касается контроллеров, моделей и всех других классов. Наименования классов должны соответствовать соглашению по именованию классов.
- config/
- Конфигурационные файлы возвращают ассоциативный массив опций, который может быть загружен с использованием метода [Kohana::config]. Для более подробной информации, обратитесь к разделу Настройка.
- i18n/
- Файлы перевода возвращают ассоциативный массив строк. Перевод осуществляется с использованием метода
__()
.Для того, чтобы перевести "Hello, world!" на Русский, нужно вызвать__('Hello, world!')
c [I18n::$lang] определённом как "ru-ru". Для более подробной информации, обратитесь к разделу Интернационализация. - messages/
- Файлы сообщений возвращают ассоциативный массив строк, который может быть загружен с использованием [Kohana::message]. Разница между сообщениями и файлами интернационализации заключается в том, что сообщения никогда не переводятся, пишутся на языке, используемом по-умолчанию, и вызываются по односложному ключу. Для более подробной информации, обратитесь к разделу Сообщения (Messages).
- views/
- Файлы представления являются PHP файлами, которые используются для генерации HTML или другого вида вывода информации. Файлы представления загружаются в объект [View] и присваиваются переменным, которые в дальнейшем конвертируются во фрагменты HTML. Множественные файлы представления могут быть вызваны одни в других. Для более подробной информации, обратитесь к разделу Представление и HTML.
Поиск файлов
Путь к любому файлу в файловой структуре приложения может быть найден путём вызова [Kohana::find_file]:
// Ищет полный путь до "classes/cookie.php"
$path = Kohana::find_file('classes', 'cookie');
// Ищет полный путь до "views/user/login.php"
$path = Kohana::find_file('views', 'user/login');
Сторонние библиотеки
Мы называем библиотеки, которые не специфичны для Kohana "vendor" библиотеками. Например, если Вы хотите использовать DOMPDF, то Вам нужно скопировать эту библиотеку в application/vendor/dompdf
и добавить автозагрузочный класс DOMPDF:
require Kohana::find_file('vendor', 'dompdf/dompdf/dompdf_config.inc');
После этого, можно использовать DOMPDF без загрузки каких-либо других файлов:
$pdf = new DOMPDF;
[!!] Если Вы хотите конвертировать представление в PDF с использованием DOMPDF, используйте PDFView модуль.