Контент


Файловая система Kohana v2.3

Как мы уже убедились при установке фреймворка, в дистрибутиве присутствуют три главных директории — system, modules и application. Рассмотрим их поподробнее.

  • SYSTEM. Эта папка — ядро системы, ее мы никогда не меняем. Здесь лежат основные «кирпичики» нашего будущего проекта.
  • MODULES. Помните, при загрузке дистрибутива на оффициальном сайте Kohana нам предоставляли возможность добавить дополнительные модули? Так вот, они сохраняются в папке MODULES, каждый модуль в своей папке.
  • APPLICATION. С этой папкой мы и будем работать постоянно, это наша песочница. Здесь будут храниться созданные нами контроллеры, модели и представления (мы ведь знаем, что такое MVC?).

Фреймворк реализует так называемую каскадную файловую систему: структура поддиректорий в рассмотренных нами папках одинакова, т.е. мы получаем как бы несколько слоев. Наивысший приоритет имеет папка APPLICATION, затем MODULES (анализируется каждый подключенный модуль) и напоследок — SYSTEM. Таким образом, нет необходимости править под свои нужды системные скрипты — можно создать свой в папке APPLICATION и он будет загружен вместо оригинального. Очень наглядна картинка из Википедии, упоминаемая в документации к фреймворку.

Какие же поддиректории могут располагаться в нашем проекте?

  • cache. Обычно используется библиотекой Cache для хранения кэшированных объектов.
  • config. В этой папке (в этих папках, если быть точнее :) ) хранится конфигурация проекта, разбитая по тематическим файлам (например, в database.php лежат настройки подключения к СУБД, а в routes.php — правила роутинга, т.к. маршрутизации запрашиваемых URL).
  • controllers. Все класс-контроллеры должны лежать тут. По традиции, каждый класс хранится в отдельном файле (например, Blog_Controller будет разыскиваться в controllers/blog.php).
  • helpers. Это небольшие вспомогательные библиотеки для совершения определенного рода действий (есть хэлпер для работы с датой/временем, есть для работы с файлами и т.д.).
  • hooks. Что-то вроде «перехватчиков» (у меня они ассоциируется с термином «триггер» из СУБД). Так они загружаются сразу после ядра системы, обычно их используют для выполнения каких-то дополнительных действий при каком-либо зафиксированном событии (т.е. как дополнительные обработчики к событиям класса Events).
  • i18n. Если необходимо создать приложение с поддержкой различных языков (я про языки стран мира ;) ), то в данной папке будем складывать т.н. «ресурсы» — куски текста, которые и должны зависеть от выбранного языка (обычно это элементы интерфейса, но не контент).
  • libraries. Библиотеки. На мой взгляд, не сильно отличаются от хэлперов. Главное отличие — хэлперы не требуют предварительной инициализации, они выступают как глобальные объекты. Библиотеки же необходимо сперва создать:
    echo date::adjust(7,'PM');  // используется хэлпер для вывода 7 часов вечера в 24-часовом формате
    $cal = new Calendar(1,2009); // Инициализируем библиотечный класс Calendar с настройкой на январь 2009
    echo $cal->render();         // Выводим в браузер

    Мы можем создавать свои собственные библиотеки, сохраняя их в папке application/libraries.

  • logs. По умолчанию класс Log складывает свои логи в папку application/logs.
  • models. Тут лежат модели — классы для предоставления контроллеру данных по запросу. Папка существует только в application.
  • vendor. Сюда мы можем складывать библиотеки сторонних разработчиков. Их мы позже можем попытаться подключить и использовать как «родные» библиотеки.
  • views. Здесь будут лежать представления, т.е. шаблоны для вывода информации, подготовленной контроллерами, в браузер.

Внутри данных папок Вы можете создать свои, например очень удобно в папке с представлениями (VIEWS) создавать отдельные подпапки для контроллеров, чтобы они не перемешивались.

Не знаю, как Вам, а мне надоедают долгие теоретические блоки информации, поэтому мы сейчас закругляемся, а в следующий раз наконец-то поиграемся этим фреймворком.

Google Bookmarks Digg Reddit del.icio.us Ma.gnolia Technorati Slashdot Yahoo My Web News2.ru БобрДобр.ru RUmarkz Ваау! Memori.ru rucity.com МоёМесто.ru Mister Wong

Опубликовано в учебник.

Теги: , .


Комментарии (0)

Будьте в курсе обсуждения, подпишитесь на RSS ленту комментариев к этой записи.



Можно включить подсветку кода: <code><pre lang="">...</pre></code>
Разрешены некоторые HTML теги

или используйте trackback.