OnItemBuild

Data Source

Эта статья еще не закончена!

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

При создании объекта класса kDBItem требуется производить сопутствующие действия - такие как подготовка SQL-запроса для загрузки данных, проверка прав доступа к данным, загрузка данных в объект при необходимости, создание и инициализация переменных окружения, инициализация свойств объекта. Для логического выделения этих операций в общем потоке предназначено особое событие - OnItemBuild.

Это событие задаётся в Unit Configs, под ключом build_event для ItemClass.

'ItemClass' => Array ('class' => 'kDBItem', 'file' => '', 'build_event' => 'OnItemBuild'),

Это событие вызывается в классе kFactory, после того как создан новый экземпляр объекта. Если в создании нового экземпляра нет необходимости, то методы kFactory возвращают ссылку на ранее созданный экземпляр, и событие OnItemBuild не происходит.

Вызывается из шаблона

Не вызывается из шаблонов.

Вызывается из событий

Не вызывается из событий.

Входные параметры

название

описание

skip_autoload (boolean)

Значение true позволяет избежать автоматического подгружения данных в объект. Этот параметр следует использовать в случаях, когда идентификатор объекта не определён, либо когда идентификатор в запросе имеется, но планируется подгружать данные другого объекта. В подобных случаях использование параметра skip_autoload позволяет избежать лишних запросов к базе данных.

Вызывает события

Не вызывает событий

Потенциальное применение

Для того, чтобы объект типа kDBItem мог инициализироваться на пользовательской части сайта без ошибки отсутствия прав, наиболее простым решением является прописывание события OnItemBuild в методе mapPermissions соответствующего обработчика событий.

function mapPermissions()
{
    parent::mapPermissions();
    $permissions = Array(
        'OnItemBuild'   =>  Array('self' => true, 'subitem' => true),
    );
    $this->permMapping = array_merge($this->permMapping, $permissions);
}

Потенциально, событие OnItemBuild возможно переписать в случае каких-то объектов, требующих нестандартной настройки, например, вследствие необычных взаимосвязей с другими объектами.

Ограничения

Особых ограничений нет.

Использует вспомогательные методы класса

  • kDBEventHandler::dbBuild

  • kDBEventHandler::ItemPrepareQuery

  • kEventHandler::CheckPermission

  • kDBEventHandler::LoadItem

  • kDBEventHandler::checkItemStatus