Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Для того, чтобы использовать тот или иной класс в K4 его необходимо сначала зарегистрировать. Регистрация класса - это процесс, в результате которого K4 становиться известно:

  • название класса;

  • где находиться файл, в котором класс описан;

  • pseudo, который будет использоваться для обращения к объекту класса.

Info

pseudo - это ключевое слово, по которому можно в последствии из любого места в K4 получить объект класса, зарегистрированного под этим pseudo.

Table of Contents
minLevel1
maxLevel6
outlinetrue
stylenone
typelist
printabletrue

Получение объекта

Получить объект можно при помощи метода kApplication::recallObject, например вот так:

Code Block
languagephp
$price =& $this->Application->recallObject('price');
/* @var $price kDBItem */

Для того, чтобы в Zend Studio работала автоматическая подсказка кода (auto-complete) нужно после получения объекта написать специальным образом оформленный комментарий. В общем случае формат этого комментария таков:

Code Block
languagephp
/* @var $variable_name ClassName */

Регистрация класса

В конфигурационном файле есть ряд опций со схожим форматом, служащих для регистрации классов в K4:

Название опции

Используемый pseudo

Anchor
ItemClass
ItemClass
ItemClass (array)

<prefix>

Anchor
ListClass
ListClass
ListClass (array)

<prefix>_List

Anchor
EventHandlerClass
EventHandlerClass
EventHandlerClass (array)

<prefix>_EventHandler

Anchor
TagProcessorClass
TagProcessorClass
TagProcessorClass (array)

<prefix>_TagProcessor

Anchor
RegisterClasses
RegisterClasses
RegisterClasses (array)

Задаётся в ручную в ключе "pseudo".

В приведённой выше таблице "<prefix>" это значение опции Prefix в конфигурационном файле. Значение каждой из выше написанных опций (кроме RegisterClasses) является массивом следующего вида:

Code Block
languagephp
Array (
	'class' => 'ClassName',
	'file' => 'FileName',
	'build_event' => 'BuildEventName',
	'require_classes' => 'RequiredClassName'
)

Все ключи в данном массиве, кроме require_classes, обязательные. Правда значения некоторых из ключей могут быть пустыми.

Название

Описание

Anchor
class
class
class (string)

Название регистрируемого класса (название нового или системного класса).

Anchor
file
file
file (string)

Название файла, содержащего описание класса (по одному файлу на один класс); если указано пустое значение то подразумевается, что используется системный класс.

Anchor
build_event
build_event
build_event (string)

Событие из обработчике событий, использующееся для инициализации экземпляров регистрируемого класса (т.е. объекта). Другими словами это конструктор класса, который находиться в обработчике событий.

Anchor
require_classes
require_classes
require_classes (mixed)

Название класса(-ов), описание которого должно быть загружено перед использованием данного класса. Если указывается один класс, то значение данного ключа может быть строкой. Если указывается несколько классов, то значение данного ключа будет массивом.

Panel
panelIconId1f4a1
panelIcon:bulb:
panelIconText💡
bgColor#FFFAE6

Значение всех ключей (кроме build_event) этого массива должно подчиняться правилу назначения имён.

Подмена классов

Бывают случаи, когда требуется заменить один или более используемых в системе классов. Для нужно использовать ключ RegisterClasses. При регистрации или подмене класса в ключе RegisterClasses требуется указывать дополнительный ключ pseudo. В данном случае его нужно указывать, т.к. он не может быть автоматически угадан (как во всех ранее описанных случаях).

Code Block
languagephp
'RegisterClasses' => Array (
	Array ('pseudo' => 'u_TagProcessor', 'class' => 'EUserTagProcessor', 'file' => 'e_user_tp.php'), // подменить обработчик тэгов пользователей
	Array ('pseudo' => 'PermissionsHelper', 'class' => 'ЕPermissionsHelper', 'file' => 'e_permission_helper.php'), // подменить класс помошника
)
  • При подмене класса нужно указывать тот "pseudo", с которым оригинальный (т.е. подменяемый) класс был изначально зарегистрирован. Этот "pseudo" можно узнать, если найти в проекте тот PHP-файл, в котором был изначально зарегистрирован требуемый класс.

  • Регистрация подменённого класса должна происходить после регистрации оригинального класса. Это условие будет автоматически выполняться, если подмена класса описана в файле "custom/units/sections_config.php".

Стандартные классы

Доступны следующие стандартные классы:

  • kDBItem - класс, для работы с одной записью в базе;

  • kDBList - класс для отображения содержания таблицы из базы (фильтрация, per-page и т.п.);

  • kDBEventHandler - класс для обработки стандартных событий из списков и форм редактирования;

  • kDBTagProcessor - класс для обработки стандартных тэгов, использующихся для вывода информации;

  • kEventHandler - базовый класс для всех обработчиков событий (использовать только в целях экономии оперативной памяти);

Для стандартных классов значение ключа file должно быть пустым.