Инструменты пользователя

Инструменты сайта


limb3_2007_3:ru:packages:web_app:commands

Команды. Интерфейс lmbCommand

Краткое описание

Команды - это группа классов, которые иногда используются при реализации действий контроллеров. Команды используются в тех случаях, когда действия тех или иных контроллеров содержат значительные повторения кода (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, проводит валидацию и позволяет связать какой-то объект с компонентом шаблона в качестве контейнера данных.

Обсуждение

Ваш комментарий. Вики-синтаксис разрешён:
 ______   ___   _____   ____  _      __
/_  __/  / _ ) / ___/  / __/ | | /| / /
 / /    / _  |/ (_ /  _\ \   | |/ |/ / 
/_/    /____/ \___/  /___/   |__/|__/
 
limb3_2007_3/ru/packages/web_app/commands.txt · Последние изменения: 2010/11/10 10:02 (внешнее изменение)