Spec-Zone.ru › Yii 1.1

CDataProviderIterator

Пакет system.web
Наследование class CDataProviderIterator » CComponent
Реализует Iterator, Traversable, Countable
С версии 1.1.13
Исходный код framework/web/CDataProviderIterator.php
CDataProviderIterator позволяет итерироваться по большим наборам данных, не загружая весь набор в память.

CDataProviderIterator итерируется по результатам поставщика данных, начиная с первой страницы результатов и заканчивая последней. Обычно он подходит только для использования с CActiveDataProvider.

Например, следующий код позволит итерироваться по всем зарегистрированным пользователям (класс активной записи User) без риска исчерпания памяти, даже если в базе данных миллионы пользователей.
$dataProvider = new CActiveDataProvider("User");
$iterator = new CDataProviderIterator($dataProvider);
foreach($iterator as $user) {
 echo $user->name."\n";
}

Общественные свойства

Свойство Тип Описание Определено в
dataProvider CDataProvider Возвращает поставщик данных для итерации CDataProviderIterator
totalItemCount целое число Получает общее количество элементов для итерации CDataProviderIterator

Общественные методы

Метод Описание Определено в
__call() Вызывает именованный метод, который не является методом класса. CComponent
__construct() Конструктор. CDataProviderIterator
__get() Возвращает значение свойства, список обработчиков событий или поведение на основе его имени. CComponent
__isset() Проверяет, является ли значение свойства нулевым. CComponent
__set() Устанавливает значение свойства компонента. CComponent
__unset() Устанавливает свойство компонента в значение null. CComponent
asa() Возвращает объект поведения с заданным именем. CComponent
attachBehavior() Прикрепляет поведение к этому компоненту. CComponent
attachBehaviors() Прикрепляет список поведений к компоненту. CComponent
attachEventHandler() Прикрепляет обработчик события к событию. CComponent
canGetProperty() Определяет, может ли свойство быть считано. CComponent
canSetProperty() Определяет, может ли свойство быть установлено. CComponent
count() Получает общее количество элементов в dataProvider. CDataProviderIterator
current() Получает текущий элемент в списке. CDataProviderIterator
detachBehavior() Отсоединяет поведение от компонента. CComponent
detachBehaviors() Отсоединяет все поведения от компонента. CComponent
detachEventHandler() Отсоединяет существующий обработчик события. CComponent
disableBehavior() Отключает прикрепленное поведение. CComponent
disableBehaviors() Отключает все прикрепленные к этому компоненту поведения. CComponent
enableBehavior() Включает прикрепленное поведение. CComponent
enableBehaviors() Включает все прикрепленные к этому компоненту поведения. CComponent
evaluateExpression() Вычисляет выражение PHP или обратный вызов в контексте этого компонента. CComponent
getDataProvider() Возвращает поставщик данных для итерации CDataProviderIterator
getEventHandlers() Возвращает список прикрепленных обработчиков событий для события. CComponent
getTotalItemCount() Получает общее количество элементов для итерации CDataProviderIterator
hasEvent() Определяет, определено ли событие. CComponent
hasEventHandler() Проверяет, есть ли прикрепленные обработчики к событию с заданным именем. CComponent
hasProperty() Определяет, определено ли свойство. CComponent
key() Получает ключ текущего элемента. CDataProviderIterator
next() Перемещает указатель к следующему элементу в списке. CDataProviderIterator
raiseEvent() Вызывает событие. CComponent
rewind() Перематывает итератор в начало списка. CDataProviderIterator
valid() Проверяет, действительна ли текущая позиция или нет. CDataProviderIterator

Защищенные методы

Метод Описание Определено в
loadPage() Загружает страницу элементов CDataProviderIterator

Подробности о свойствах

dataProvider свойство только для чтения

public CDataProvider getDataProvider()

Возвращает поставщик данных для итерации

totalItemCount свойство только для чтения

public integer getTotalItemCount()

Получает общее количество элементов для итерации

Подробности о методах

__construct() метод

public void __construct(CDataProvider $dataProvider, integer $pageSize=NULL)
$dataProvider CDataProvider поставщик данных для итерации
$pageSize целое число размер страницы для итерации. Это количество объектов, загружаемых в память одновременно.
Исходный код: framework/web/CDataProviderIterator.php#48 (показать)
public function __construct(CDataProvider $dataProvider, $pageSize=null)
{
    
$this->_dataProvider=$dataProvider;
    
$this->_totalItemCount=$dataProvider->getTotalItemCount();

    if((
$pagination=$this->_dataProvider->getPagination())===false)
        
$this->_dataProvider->setPagination($pagination=new CPagination());

    if(
$pageSize!==null)
        
$pagination->setPageSize($pageSize);
}

Конструктор.

count() метод

public integer count()
{возвращаемое значение} целое число общее количество элементов
Исходный код: framework/web/CDataProviderIterator.php#151 (показать)
public function count()
{
    return 
$this->_totalItemCount;
}

Получает общее количество элементов в dataProvider. Этот метод требуется интерфейсом Countable.

current() метод

public mixed current()
{возвращаемое значение} смешанный тип текущий элемент в списке
Исходный код: framework/web/CDataProviderIterator.php#93 (показать)
public function current()
{
    return 
$this->_items[$this->_currentIndex];
}

Получает текущий элемент в списке. Этот метод требуется интерфейсом Iterator.

getDataProvider() метод

public CDataProvider getDataProvider()
{return} CDataProvider источник данных для итерации
Исходный код: framework/web/CDataProviderIterator.php#64 (показать)
public function getDataProvider()
{
    return 
$this->_dataProvider;
}

Возвращает источник данных для итерации

getTotalItemCount() метод

public integer getTotalItemCount()
{return} целое число общее количество элементов для итерации
Исходный код: framework/web/CDataProviderIterator.php#73 (показать)
public function getTotalItemCount()
{
    return 
$this->_totalItemCount;
}

Возвращает общее количество элементов для итерации

key() метод

public integer key()
{return} целое число ключ текущего элемента
Исходный код: framework/web/CDataProviderIterator.php#103 (показать)
public function key()
{
    
$pageSize=$this->_dataProvider->getPagination()->getPageSize();
    return 
$this->_currentPage*$pageSize+$this->_currentIndex;
}

Возвращает ключ текущего элемента. Этот метод требуется интерфейсом Iterator.

loadPage() метод

protected array loadPage()
{return} массив элементы со следующей страницы результатов
Исходный код: framework/web/CDataProviderIterator.php#82 (показать)
protected function loadPage()
{
    
$this->_dataProvider->getPagination()->setCurrentPage($this->_currentPage);
    return 
$this->_items=$this->dataProvider->getData(true);
}

Загружает страницу элементов

next() метод

public void next()
Исходный код: framework/web/CDataProviderIterator.php#113 (показать)
public function next()
{
    
$pageSize=$this->_dataProvider->getPagination()->getPageSize();
    
$this->_currentIndex++;
    if(
$this->_currentIndex >= $pageSize)
    {
        
$this->_currentPage++;
        
$this->_currentIndex=0;
        
$this->loadPage();
    }
}

Перемещает указатель к следующему элементу в списке. Этот метод требуется интерфейсом Iterator.

rewind() метод

public void rewind()
Исходный код: framework/web/CDataProviderIterator.php#129 (показать)
public function rewind()
{
    
$this->_currentIndex=0;
    
$this->_currentPage=0;
    
$this->loadPage();
}

Возвращает итератор к началу списка. Этот метод требуется интерфейсом Iterator.

valid() метод

public boolean valid()
{return} логическое true, если индекс валиден
Исходный код: framework/web/CDataProviderIterator.php#141 (показать)
public function valid()
{
    return 
$this->key() < $this->_totalItemCount;
}

Проверяет, является ли текущая позиция допустимой. Этот метод требуется интерфейсом Iterator.

© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc/api/1.1/CDataProviderIterator

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API