59 lines
6.5 KiB
Markdown
59 lines
6.5 KiB
Markdown
# Каскадная файловая система
|
||
|
||
Файловая система Kohana представляет собой иерархическая структура каталогов. Когда файл загружается, используя [Kohana::find_file], он ищется в каталогах в следующем порядке:
|
||
|
||
Application путь
|
||
: Определён как `APPPATH` в `index.php`. Значение по-умолчанию - `application`.
|
||
|
||
Module путь
|
||
: Определён как ассоциативный массив [Kohana::modules] в `APPPATH/bootstrap.php`. Поиск каждого значение массива будет произведён в том порядке, в каком порядке они определены.
|
||
|
||
System путь
|
||
: Определён как `SYSPATH` в `index.php`. Значение по-умолчанию - `system`. Все основные или "core" файлы и классы располагаются в этой категории.
|
||
|
||
Файлы, находящиеся в каталогах выше уровнем, имеют приоритет над файлами, которые располагаются в таких же папках уровнем ниже, что позволяет перегружать любой файл, путём перемещения файла с таким же названием на уровень выше:
|
||
|
||
![Каскадная файловая система](img/cascading_filesystem.png)
|
||
|
||
Если у Вас имеется файл представления с названием `wellcome.php`, расположенный в `APPPATH/views` и `SYSPATH/views`, то при поиске файла с этим именем будет возвращен тот, который находится в папке `APPPATH/views` (как находящийся на высшем уровне иерархической системы). Если же удалить файл в каталоге `APPPATH/views`, то при очередном поиске этого файла будет вызван тот, что располагается в каталоге `SYSPATH/views`.
|
||
|
||
## Типы файлов
|
||
|
||
Верхний уровень каталогов application, module, и system путей, по-умолчанию имеет следующие директории:
|
||
|
||
classes/
|
||
: Все классы, которые должны быть [автоматически загружены](using.autoloading) должны располагаться тут. Это касается контроллеров, моделей и всех других классов. Наименования классов должны соответствовать [соглашению по именованию классов](about.conventions#classes).
|
||
|
||
config/
|
||
: Конфигурационные файлы возвращают ассоциативный массив опций, который может быть загружен с использованием метода [Kohana::config]. Для более подробной информации, обратитесь к разделу [Настройка](using.configuration).
|
||
|
||
i18n/
|
||
: Файлы перевода возвращают ассоциативный массив строк. Перевод осуществляется с использованием метода `__()`.Для того, чтобы перевести "Hello, world!" на Русский, нужно вызвать `__('Hello, world!')` c [I18n::$lang] определённом как "ru-ru". Для более подробной информации, обратитесь к разделу [Интернационализация](using.translation).
|
||
|
||
messages/
|
||
: Файлы сообщений возвращают ассоциативный массив строк, который может быть загружен с использованием [Kohana::message]. Разница между сообщениями и файлами интернационализации заключается в том, что сообщения никогда не переводятся, пишутся на языке, используемом по-умолчанию, и вызываются по односложному ключу. Для более подробной информации, обратитесь к разделу [Сообщения (Messages)](using.messages).
|
||
|
||
views/
|
||
: Файлы представления являются PHP файлами, которые используются для генерации HTML или другого вида вывода информации. Файлы представления загружаются в объект [View] и присваиваются переменным, которые в дальнейшем конвертируются во фрагменты HTML. Множественные файлы представления могут быть вызваны одни в других. Для более подробной информации, обратитесь к разделу [Представление и HTML](usings.views).
|
||
|
||
## Поиск файлов
|
||
|
||
Путь к любому файлу в файловой структуре приложения может быть найден путём вызова [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](http://code.google.com/p/dompdf), то Вам нужно скопировать эту библиотеку в `application/vendor/dompdf` и добавить автозагрузочный класс DOMPDF:
|
||
|
||
require Kohana::find_file('vendor', 'dompdf/dompdf/dompdf_config.inc');
|
||
|
||
После этого, можно использовать DOMPDF без загрузки каких-либо других файлов:
|
||
|
||
$pdf = new DOMPDF;
|
||
|
||
[!!] Если Вы хотите конвертировать представление в PDF с использованием DOMPDF, используйте [PDFView](http://github.com/shadowhand/pdfview) модуль. |