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

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


limb3_2007_2:ru:packages:datasource:usage

Использование пакета DATASOURCE

Прохождение по итератору

Возьмем самым простой пример. Мы создадим небольшой массив данных, сделаем из него lmbArrayDataSet и пройдемся по нему при помощи интерфейса Iterator.

$dataset = array (
  array ('username'=>'jdoe','email'=>'jdoe@hotmail.com'),
  array ('username'=>'rsmith','email'=>'rsmith@cure.org'),
  array ('username'=>'nclark','email'=>'nclark@yahoo.com'),
);
 
$rs = new lmbArrayDataSet($dataset);
 
$str = '';
for($rs->rewind(); $rs->valid(); $rs->next())
{
  $record = $rs->current();
  $str .= 'User: '. $record->get('username') . ' ';
  $str .= 'Email: '. $record->get('email') . "\n";
}
  • rewind() - переводит внутренний счетчик в начальное положение
  • valid() - проверяет не перещел ли внутренний счетчик за положенные границы
  • next() - переводит внутренний счетчик на следующую позицию
  • current() - возвращает текущий элемент итератора. lmbArrayDataset возвращает в этом случае объект, который поддерживает интерфейс lmbDataSource

Так как в PHP5 интерфейс итератора встроен в язык, данный пример можно записать чуть короче:

$dataset = array (
  array ('username'=>'jdoe','email'=>'jdoe@hotmail.com'),
  array ('username'=>'rsmith','email'=>'rsmith@cure.org'),
  array ('username'=>'nclark','email'=>'nclark@yahoo.com'),
);
 
$rs = new lmbArrayDataset($dataset);
 
$str = '';
foreach($rs as $record)
{
  $str .= 'User: '. $record->get('username') . ' ';
  $str .= 'Email: '. $record->get('email') . "\n";
}

Разбиение итератора на страницы

Продемонстрируем разбиение итератора на страницы. Для этого воспользуемся классами lmbPagedArrayDataset и lmbFakePager.

$dataset = array (
  array ('username'=>'jdoe','email'=>'jdoe@hotmail.com'),
  array ('username'=>'rsmith','email'=>'rsmith@cure.org'),
  array ('username'=>'nclark','email'=>'nclark@yahoo.com'),
);
 
$pager = new lmbFakePager($offset = 0, $limit = 2);
 
$rs = new lmbPagedArrayDataset($dataset);
$rs->paginate($pager);
 
$str = '';
foreach($rs as $record)
{
  $str .= 'User: '. $record->get('username') . ' ';
  $str .= 'Email: '. $record->get('email') . "\n";
}

Отобразит данные только для двух первых пользователей.

Обсуждение

Ваш комментарий. Вики-синтаксис разрешён:
  _____  ____  __  __  _____   __ __
 / ___/ / __ \ \ \/ / / ___/  / // /
/ (_ / / /_/ /  \  / / (_ /  / _  / 
\___/  \___\_\  /_/  \___/  /_//_/
 
limb3_2007_2/ru/packages/datasource/usage.txt · Последнее изменение: 2010/11/10 10:02 — 127.0.0.1