3.2.2. Регистрация классов
Для того, чтобы использовать тот или иной класс в K4
его необходимо сначала зарегистрировать. Регистрация класса - это процесс, в результате которого K4
становиться известно:
название класса;
где находиться файл, в котором класс описан;
pseudo
, который будет использоваться для обращения к объекту класса.
pseudo
- это ключевое слово, по которому можно в последствии из любого места в K4
получить объект класса, зарегистрированного под этим pseudo
.
Получение объекта
Получить объект можно при помощи метода kApplication::recallObject
, например вот так:
$price =& $this->Application->recallObject('price');
/* @var $price kDBItem */
Для того, чтобы в Zend Studio работала автоматическая подсказка кода (auto-complete
) нужно после получения объекта написать специальным образом оформленный комментарий. В общем случае формат этого комментария таков:
/* @var $variable_name ClassName */
Регистрация класса
В конфигурационном файле есть ряд опций со схожим форматом, служащих для регистрации классов в K4
:
В приведённой выше таблице "<prefix>
" это значение опции Prefix в конфигурационном файле. Значение каждой из выше написанных опций (кроме RegisterClasses
) является массивом следующего вида:
Array (
'class' => 'ClassName',
'file' => 'FileName',
'build_event' => 'BuildEventName',
'require_classes' => 'RequiredClassName'
)
Все ключи в данном массиве, кроме require_classes
, обязательные. Правда значения некоторых из ключей могут быть пустыми.
Название | Описание |
---|---|
Название регистрируемого класса (название нового или системного класса). | |
Название файла, содержащего описание класса (по одному файлу на один класс); если указано пустое значение то подразумевается, что используется системный класс. | |
Событие из обработчике событий, использующееся для инициализации экземпляров регистрируемого класса (т.е. объекта). Другими словами это конструктор класса, который находиться в обработчике событий. | |
Название класса(-ов), описание которого должно быть загружено перед использованием данного класса. Если указывается один класс, то значение данного ключа может быть строкой. Если указывается несколько классов, то значение данного ключа будет массивом. |
Значение всех ключей (кроме build_event) этого массива должно подчиняться правилу назначения имён.
Подмена классов
Бывают случаи, когда требуется заменить один или более используемых в системе классов. Для нужно использовать ключ RegisterClasses
. При регистрации или подмене класса в ключе RegisterClasses
требуется указывать дополнительный ключ pseudo
. В данном случае его нужно указывать, т.к. он не может быть автоматически угадан (как во всех ранее описанных случаях).
При подмене класса нужно указывать тот "
pseudo
", с которым оригинальный (т.е. подменяемый) класс был изначально зарегистрирован. Этот "pseudo
" можно узнать, если найти в проекте тот PHP-файл, в котором был изначально зарегистрирован требуемый класс.Регистрация подменённого класса должна происходить после регистрации оригинального класса. Это условие будет автоматически выполняться, если подмена класса описана в файле "
custom/units/sections_config.php
".
Стандартные классы
Доступны следующие стандартные классы:
kDBItem
- класс, для работы с одной записью в базе;kDBList
- класс для отображения содержания таблицы из базы (фильтрация, per-page и т.п.);kDBEventHandler
- класс для обработки стандартных событий из списков и форм редактирования;kDBTagProcessor
- класс для обработки стандартных тэгов, использующихся для вывода информации;kEventHandler
- базовый класс для всех обработчиков событий (использовать только в целях экономии оперативной памяти);
Для стандартных классов значение ключа file должно быть пустым.