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

Обсуждение