Классы LabCMS, User, Db, Tpl выполнени на основе паттерна singletone, что позволяет не заботиться об области их видимости и не создавать их экземлпяры в тех случаях, когда они не нужны.
Для обращения к свойствам или методам классов использующих паттерн singltone используется следующий код:
или более короткий вариант
В этом случае происходит обращение к экземпляру класса в том случае если он уже создан, или его создание в случае если он пока создан не был.
Общие для системы классы хранятся в каталоге /kernel/classes. Для именования классов используются соглашения по именования PEAR. Где символ подчеркивания показывает иерархию подкаталогов внутри каталога с классами. То есть файл класса My_Class_Name будет находиться в файле /kernel/classes/My/Class/Name.php
Для сторонних классов не придерживающихся этих соглашений, по возможности, пишутся обертки.
Непосредственно перед вызовом модуля определяются массивы $config и LabConfig::$mcfg, в которых содержатся настройки текущего модуля. Массив $config является устаревшим и оставлен для обратной совместимости.
Для корректного отображения данных, модуль должен передать в класс шаблонизатора набор данных дле рендеринга и указать название используемого шаблона. Сделать это можно либо определив значения переменной $mod_template (устаревший вариант), или воспользовавшись методом setModuleTemplate('templateName.tpl') класса LabCMS.
Иногда бывает необходимо отменить исполнение всех модулей следующих за текущим (например, в случае аякс запросов). Для этого предназначен ключ LabVars::$break. Если его значение установить в true, то все модули следующие после того, в котором этот ключ установлен, исполняться не будут. В принципе, ничего не мешает сделать просто exit();, но в этом случае не сработает кэширование и не будет инициализирован шаблонизатор (собственно, в случае аякс запросов это не всегда и нужно).
Неиспользуемые элементы могут быть опущены.
Каждый модуль представляет собой отдельный подкаталог в каталоге kernel/modules.
Минимально модуль состоит из двух файлов:
index.php - является главным исполняемым файлом модуля. Именно он подключается при вызове модуля движком.
config.xml - в этом файле собраны данные о модуле: название, описание, тип, зависимости, а так же возможные настройки и права.
Если для работы модуля необходимо создать в БД какие-то таблицы, то создаются еще два файла:
install.sql - sql дамп, который исполняется при установке модуля.
uninstall.sql - соответственно, sql дамп, который исполняется при удалении модуля.
При переустановке модуля последовательно выполняются сначала uninstall.sql, затем install.sql
Так же модуль может содержать дополнительные файлы, вызываемые другими модулями. Они именуются следующим образом: mod_modulename.inc, где modulename - имя вызывающего модуля. Сейчас такую возможность используют два модуля - модуль поиска (search) и модуль построения карты сайта (sitemap).
Все остальные файлы в подкаталоге модуля могут создаваться и именоваться на усмотрение разработчика модуля.
Шаблоны модуля указываются с расширением и без путей. Текущим каталогом для подключения шаблона считается /skins/current_skin/module_name, где current_skin - название текущего скина, а module_name - название каталога текущего модуля. В случае если в данном каталоге шаблон обнаружен не будет, то будет произведена попытка подключить указанный шаблон по адресу /skins/default/module_name. Если же он отсутствует и там - будет вызвано исключение.
Шаблоны пишутся с использованием синтаксиса Smarty
Всего комментариев: 0