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

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


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 (внешнее изменение)