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

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


limb3:ru:packages:core:lmb_collection_decorator

lmbCollectionDecorator

Класс lmbCollectionDecorator - базовый класс, реализующий lmbCollectionInterface, используется в качестве базового при реализации декораторов на коллекции.

class SomeIteratorDecorator extends lmbCollectionDecorator 
{
  function rewind()
  {
    parent :: rewind();
 
    $this->_initImportantData();
  }
 
  function current()
  {
    $record = parent :: current();
 
    $this->_processRecord($record);
 
    return $record;
  }
 
  protected function _processRecord($record)
  {
    [...]
  }
 
  protected function _initImportantData()
  {
    [...]
  }
}

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

class SomeIteratorDecorator extends lmbCollectionDecorator
{
  protected $processed = false;
 
  function rewind()
  {
    parent :: rewind();
 
    if(!$this->processed && $this->iterator->valid())
    {
      [...do some processing...]
      $iterator = [...do some processing...]
      $this->processed = true;
    }
    else
      $iterator = new lmbCollection();
 
    $this->iterator = $iterator;
 
    return $this->iterator->rewind();
  }

Обсуждение

Ваш комментарий. Вики-синтаксис разрешён:
   _  __   ____  ____   ___    _  __
  | |/_/  / __/ /_  /  / _ \  / |/ /
 _>  <   _\ \    / /_ / ___/ /    / 
/_/|_|  /___/   /___//_/    /_/|_/
 
limb3/ru/packages/core/lmb_collection_decorator.txt · Последнее изменение: 2010/11/10 10:02 — 127.0.0.1