Содержание

Расширение поведения базового класса lmbActiveRecord

lmbActiveRecord представляет 2 базовых способа расширять свое поведение:

  1. Путем расширения шаблонных методов (Template_method_pattern), которые внедрены в различные метода методов save() и destroy(). Этим методом могут пользоваться дочерние классы
  2. Путем регистрации случашелей (event listeners) на различные события, которые происходят в методах save() и destory(). Этим могут пользоваться клиенты объектов ActiveRecord.

Перекрытие шаблонных методов

lmbActiveRecord содержит различные пустые шаблонные методы, которые дочерние классы могут перекрывать чтобы расширить поведение родительского класса (в скобках указаны публичные метод, где они вызываются):

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

Регистрация слушателей на объекты

lmbActiveRecord позволяет регистрировать слушатели на определенные события, которые в настоящее время соответствуют шаблонным методам, которые мы указали выше.

Регистрация слушателя производится путем вызова метода вида registerOn_XXX_Callback($object, $method), где _XXX_ - тип события, $object - слушатель, а $method, название метода, который будет вызываться объектом ActiveRecord при оповещении. В $method приходит в качестве параметра сам объект ActiveRecord. Например:

class Document extends lmbActiveRecord
{
[...]
}
 
class SomeController extends lmbController
{
  function doSomeAction()
  {
    $document = new Document($document_id);
    $document->registerOnUpdateCallback($this, 'processDocumentUpdate');
    [...]
    $document->save();
  }
 
  function processDocumentUpdate($document)
  {
    [... do something special with document]
  }
}

Слушатели удобны в том случае, когда объекты ActiveRecord обрабатываются группой объектов по цепочке и логика по обработке достаточно сильна распределена по классам.

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

!! Обратите внимание, что слушатели оповещаются после вызыва соответствующего шаблонного метода.