Команды - это группа классов, которые иногда используются при реализации действий контроллеров. Команды используются в тех случаях, когда действия тех или иных контроллеров содержат значительные повторения кода (code duplications), а создавать общего потомка для этих контроллеров не удобно или нецелесообразно.
Классы и интерфейсы подсистемы команд можно найти в папке limb/web_app/src/command/.
Команды реализуют простейший интерфейс lmbCommand:
interface lmbCommand { function perform(); }
Команды чаще всего запускаются при помощи специального метода lmbAbstractController :: performCommand(), который первым параметром принимает alias пути до файла с классом команды, а остальными - все, что нужно передать этому классу в конструктор, например:
class lmbCmsSaveObjectPriorityCommand extends lmbActionCommand { protected $class_name; function __construct($class_name) { $this->class_name = $class_name; parent :: __construct(); } function perform() { [...] } } class MyController extends lmbController { function doSavePriority() { $this->performCommand('limb/cms/src/command/lmbCmsSaveObjectPriorityCommand ', 'Folder'); } }
Вызов
$this->performCommand('limb/cms/src/command/lmbCmsSaveObjectPriorityCommand', 'Folder');
полностю аналогочин следующему коду:
require_once('limb/cms/src/command/lmbCmsSaveObjectPriorityCommand.class.php'); $command = new lmbCmsSaveObjectPriorityCommand('Folder'); $command->perform();
На выполнении команд построена работа класса lmbStaticCommandController, которые все свои действия реализует в виде отдельных классов команд. Правда, стоит отметить, что в последнее время мы стали крайне редко использовать lmbStaticCommandController в своих проектах.
Классы команд обычно хранятся в папках /src/command пакетов.
Команда | Назначение |
---|---|
lmbBaseCommand | Базовый абстрактный класс команд. Хранит объекты request, response, session и toolkit и метод performCommand() аналогичный методу lmbAbstractController :: performCommand() для сокращения записи в дочерних командах. |
lmbActionCommand | Родительский класс для всех команд, работающих со View. Получает в конструкторе имя шаблона и содержит набор helper-методов для работы со View. |
lmbFormCommand | Управляет процессом обработки форм. Позволяет регистрировать слушателей на события onBefore, onShow, onBeforeValidate, onValid, onError, onAfterValidate, onAfter, проводит валидацию и позволяет связать какой-то объект с компонентом шаблона в качестве контейнера данных. |
Обсуждение