====== Использование пакета 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";
}
Отобразит данные только для двух первых пользователей.