<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="https://limb.nohau.ru/lib/exe/css.php?s=feed" type="text/css"?>
<rdf:RDF
    xmlns="http://purl.org/rss/1.0/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
    xmlns:dc="http://purl.org/dc/elements/1.1/">
    <channel rdf:about="https://limb.nohau.ru/feed.php">
        <title>Фремворк Limb - limb3_2007_2:ru:packages:datasource</title>
        <description></description>
        <link>https://limb.nohau.ru/</link>
        <image rdf:resource="https://limb.nohau.ru/lib/exe/fetch.php?media=wiki:dokuwiki.svg" />
       <dc:date>2026-11-10T16:44:59+00:00</dc:date>
        <items>
            <rdf:Seq>
                <rdf:li rdf:resource="https://limb.nohau.ru/doku.php?id=limb3_2007_2:ru:packages:datasource:iterators&amp;rev=1289372570&amp;do=diff"/>
                <rdf:li rdf:resource="https://limb.nohau.ru/doku.php?id=limb3_2007_2:ru:packages:datasource:lmb_array_dataset&amp;rev=1289372570&amp;do=diff"/>
                <rdf:li rdf:resource="https://limb.nohau.ru/doku.php?id=limb3_2007_2:ru:packages:datasource:lmb_dataspace&amp;rev=1289372570&amp;do=diff"/>
                <rdf:li rdf:resource="https://limb.nohau.ru/doku.php?id=limb3_2007_2:ru:packages:datasource:lmb_empty_iterator&amp;rev=1289372570&amp;do=diff"/>
                <rdf:li rdf:resource="https://limb.nohau.ru/doku.php?id=limb3_2007_2:ru:packages:datasource:lmb_fake_pager&amp;rev=1289372570&amp;do=diff"/>
                <rdf:li rdf:resource="https://limb.nohau.ru/doku.php?id=limb3_2007_2:ru:packages:datasource:lmb_iterator_decorator&amp;rev=1289372570&amp;do=diff"/>
                <rdf:li rdf:resource="https://limb.nohau.ru/doku.php?id=limb3_2007_2:ru:packages:datasource:lmb_paged_array_dataset&amp;rev=1289372570&amp;do=diff"/>
                <rdf:li rdf:resource="https://limb.nohau.ru/doku.php?id=limb3_2007_2:ru:packages:datasource:lmb_paged_dataset&amp;rev=1289372570&amp;do=diff"/>
                <rdf:li rdf:resource="https://limb.nohau.ru/doku.php?id=limb3_2007_2:ru:packages:datasource:lmb_pager&amp;rev=1289372570&amp;do=diff"/>
                <rdf:li rdf:resource="https://limb.nohau.ru/doku.php?id=limb3_2007_2:ru:packages:datasource:lmb_setter_dataset_decorator&amp;rev=1289372570&amp;do=diff"/>
                <rdf:li rdf:resource="https://limb.nohau.ru/doku.php?id=limb3_2007_2:ru:packages:datasource:non_iterators&amp;rev=1289372570&amp;do=diff"/>
                <rdf:li rdf:resource="https://limb.nohau.ru/doku.php?id=limb3_2007_2:ru:packages:datasource:usage&amp;rev=1289372570&amp;do=diff"/>
            </rdf:Seq>
        </items>
    </channel>
    <image rdf:about="https://limb.nohau.ru/lib/exe/fetch.php?media=wiki:dokuwiki.svg">
        <title>Фремворк Limb</title>
        <link>https://limb.nohau.ru/</link>
        <url>https://limb.nohau.ru/lib/exe/fetch.php?media=wiki:dokuwiki.svg</url>
    </image>
    <item rdf:about="https://limb.nohau.ru/doku.php?id=limb3_2007_2:ru:packages:datasource:iterators&amp;rev=1289372570&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2010-11-10T07:02:50+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Итераторы</title>
        <link>https://limb.nohau.ru/doku.php?id=limb3_2007_2:ru:packages:datasource:iterators&amp;rev=1289372570&amp;do=diff</link>
        <description>Итераторы

В PHP5 интерфейсы Iterator и Traversable являются уже встроенными и входят в  библиотеку SPL (StandardPHPLibrary).

Диаграмма классов

Классы-итераторы
КлассНазначениеlmbIteratorBaseАбстрактный базовый класс для итераторов.</description>
    </item>
    <item rdf:about="https://limb.nohau.ru/doku.php?id=limb3_2007_2:ru:packages:datasource:lmb_array_dataset&amp;rev=1289372570&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2010-11-10T07:02:50+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>lmbArrayDataset</title>
        <link>https://limb.nohau.ru/doku.php?id=limb3_2007_2:ru:packages:datasource:lmb_array_dataset&amp;rev=1289372570&amp;do=diff</link>
        <description>lmbArrayDataset

Класс lmbArrayDataset используется в случах, когда нужно представить массив данных (вернее массив ассоцивных массивов) в виде итератора.</description>
    </item>
    <item rdf:about="https://limb.nohau.ru/doku.php?id=limb3_2007_2:ru:packages:datasource:lmb_dataspace&amp;rev=1289372570&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2010-11-10T07:02:50+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>lmbDataspace</title>
        <link>https://limb.nohau.ru/doku.php?id=limb3_2007_2:ru:packages:datasource:lmb_dataspace&amp;rev=1289372570&amp;do=diff</link>
        <description>lmbDataspace

lmbDataspace - класс, который используется в качестве хранилища произвольных данных и который поддерживает интерфейс lmbDatasource.</description>
    </item>
    <item rdf:about="https://limb.nohau.ru/doku.php?id=limb3_2007_2:ru:packages:datasource:lmb_empty_iterator&amp;rev=1289372570&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2010-11-10T07:02:50+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>lmbEmptyIterator</title>
        <link>https://limb.nohau.ru/doku.php?id=limb3_2007_2:ru:packages:datasource:lmb_empty_iterator&amp;rev=1289372570&amp;do=diff</link>
        <description>lmbEmptyIterator

Класс lmbEmptyIterator - пустой итератор, наследуется от lmbIteratorBase. lmbEmptyIterator :: valid() всегда возвращает false. lmbEmptyIterator :: current() возращает null.

lmbEmptyIterator - это пример реализации паттерна Null Object, то есть в тех случаях, когда клиенты должны получить результат-объект, поддерживающий определенный интерфейс (в данном случае интерфейс итератора), однако этот объект должен вести себя как пустой результат.…</description>
    </item>
    <item rdf:about="https://limb.nohau.ru/doku.php?id=limb3_2007_2:ru:packages:datasource:lmb_fake_pager&amp;rev=1289372570&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2010-11-10T07:02:50+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>lmbFakePager</title>
        <link>https://limb.nohau.ru/doku.php?id=limb3_2007_2:ru:packages:datasource:lmb_fake_pager&amp;rev=1289372570&amp;do=diff</link>
        <description>lmbFakePager

Класс lmbFakePager - заглушка, используемая чаще всего в тестах, реализующая интерфейс lmbPager. 

В конструктор lmbFakePager передается начальная позиция пейджера ($offset) и количество элементов на одной странице ($limit), которые используются в методах lmbPager :: getStartingItem() и lmbPager :: getItemsPerPage().…</description>
    </item>
    <item rdf:about="https://limb.nohau.ru/doku.php?id=limb3_2007_2:ru:packages:datasource:lmb_iterator_decorator&amp;rev=1289372570&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2010-11-10T07:02:50+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>lmbIteratorDecorator</title>
        <link>https://limb.nohau.ru/doku.php?id=limb3_2007_2:ru:packages:datasource:lmb_iterator_decorator&amp;rev=1289372570&amp;do=diff</link>
        <description>lmbIteratorDecorator

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


class SomeIteratorDecorator extends lmbIteratorDecorator
{
  function rewind()
  {
    parent :: rewind();
  
    $this-&gt;_initImportantData();
  }

  function current()
  {
    $record = parent :: current();
    
    $this-&gt;_processRecord($record);

    return $record;
  }

  protected function _processRecord($record)
  {
    [...]
  }

  protected functi…</description>
    </item>
    <item rdf:about="https://limb.nohau.ru/doku.php?id=limb3_2007_2:ru:packages:datasource:lmb_paged_array_dataset&amp;rev=1289372570&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2010-11-10T07:02:50+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>lmbPagedArrayDataset</title>
        <link>https://limb.nohau.ru/doku.php?id=limb3_2007_2:ru:packages:datasource:lmb_paged_array_dataset&amp;rev=1289372570&amp;do=diff</link>
        <description>lmbPagedArrayDataset

Класс lmbPagedArrayDataset - наследуется от lmbArrayDataset и поддерживает интерфейс lmbPagedDataset. 

Пример использования класса lmbPagedArrayDataset приведен на странице списка итераторов.</description>
    </item>
    <item rdf:about="https://limb.nohau.ru/doku.php?id=limb3_2007_2:ru:packages:datasource:lmb_paged_dataset&amp;rev=1289372570&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2010-11-10T07:02:50+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Интерфейс lmbPagedDataset</title>
        <link>https://limb.nohau.ru/doku.php?id=limb3_2007_2:ru:packages:datasource:lmb_paged_dataset&amp;rev=1289372570&amp;do=diff</link>
        <description>Интерфейс lmbPagedDataset

Интерфейс lmbPagedDataset предназначен для разбиения итераторов на страницы (pagination). Для разбиения итератора на страницы предназначен метод paginate($pager). В качестве параметра передается объект, поддерживающий интерфейс</description>
    </item>
    <item rdf:about="https://limb.nohau.ru/doku.php?id=limb3_2007_2:ru:packages:datasource:lmb_pager&amp;rev=1289372570&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2010-11-10T07:02:50+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Интерфейс lmbPager</title>
        <link>https://limb.nohau.ru/doku.php?id=limb3_2007_2:ru:packages:datasource:lmb_pager&amp;rev=1289372570&amp;do=diff</link>
        <description>Интерфейс lmbPager

Интерфейс lmbPager введен в целях документирования кода. Состоит из методов:

	*  setPagedDataSet($dataset);
	*  getStartingItem(); - возвращает позицию текущей страницы (номер элемента итератора, с которого начинается текущая страница).</description>
    </item>
    <item rdf:about="https://limb.nohau.ru/doku.php?id=limb3_2007_2:ru:packages:datasource:lmb_setter_dataset_decorator&amp;rev=1289372570&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2010-11-10T07:02:50+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>lmbSetterDatasetDecorator</title>
        <link>https://limb.nohau.ru/doku.php?id=limb3_2007_2:ru:packages:datasource:lmb_setter_dataset_decorator&amp;rev=1289372570&amp;do=diff</link>
        <description>lmbSetterDatasetDecorator

Класс lmbSetterDatasetDecorator используется, когда необходимо в каждую запись декорируемого итератора добавлять некоторые данные. Для указания, какие именно данные должны быть добавлены в запись, используются setter-ы.</description>
    </item>
    <item rdf:about="https://limb.nohau.ru/doku.php?id=limb3_2007_2:ru:packages:datasource:non_iterators&amp;rev=1289372570&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2010-11-10T07:02:50+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Несписковые контейнеры данных</title>
        <link>https://limb.nohau.ru/doku.php?id=limb3_2007_2:ru:packages:datasource:non_iterators&amp;rev=1289372570&amp;do=diff</link>
        <description>Несписковые контейнеры данных

Несписковые контейнеры данных можно представлять в виде объектной формы простых ассоциативных массивов.</description>
    </item>
    <item rdf:about="https://limb.nohau.ru/doku.php?id=limb3_2007_2:ru:packages:datasource:usage&amp;rev=1289372570&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2010-11-10T07:02:50+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Использование пакета DATASOURCE</title>
        <link>https://limb.nohau.ru/doku.php?id=limb3_2007_2:ru:packages:datasource:usage&amp;rev=1289372570&amp;do=diff</link>
        <description>Использование пакета DATASOURCE

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

Возьмем самым простой пример. Мы создадим небольшой массив данных, сделаем из него lmbArrayDataSet и пройдемся по нему при помощи интерфейса Iterator.</description>
    </item>
</rdf:RDF>
