CDataProviderIterator
| Пакет | system.web |
|---|---|
| Наследование | class CDataProviderIterator » CComponent |
| Реализует | Iterator, Traversable, Countable |
| С версии | 1.1.13 |
| Исходный код | framework/web/CDataProviderIterator.php |
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 | целое число | размер страницы для итерации. Это количество объектов, загружаемых в память одновременно. |
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() | ||
| {возвращаемое значение} | целое число | общее количество элементов |
public function count()
{
return $this->_totalItemCount;
}
Получает общее количество элементов в dataProvider. Этот метод требуется интерфейсом Countable.
current() метод
public mixed current() | ||
| {возвращаемое значение} | смешанный тип | текущий элемент в списке |
public function current()
{
return $this->_items[$this->_currentIndex];
}
Получает текущий элемент в списке. Этот метод требуется интерфейсом Iterator.
getDataProvider() метод
public CDataProvider getDataProvider() | ||
| {return} | CDataProvider | источник данных для итерации |
public function getDataProvider()
{
return $this->_dataProvider;
}
Возвращает источник данных для итерации
getTotalItemCount() метод
public integer getTotalItemCount() | ||
| {return} | целое число | общее количество элементов для итерации |
public function getTotalItemCount()
{
return $this->_totalItemCount;
}
Возвращает общее количество элементов для итерации
key() метод
public integer key() | ||
| {return} | целое число | ключ текущего элемента |
public function key()
{
$pageSize=$this->_dataProvider->getPagination()->getPageSize();
return $this->_currentPage*$pageSize+$this->_currentIndex;
}
Возвращает ключ текущего элемента. Этот метод требуется интерфейсом Iterator.
loadPage() метод
protected array loadPage() | ||
| {return} | массив | элементы со следующей страницы результатов |
protected function loadPage()
{
$this->_dataProvider->getPagination()->setCurrentPage($this->_currentPage);
return $this->_items=$this->dataProvider->getData(true);
}
Загружает страницу элементов
next() метод
public void next() |
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() |
public function rewind()
{
$this->_currentIndex=0;
$this->_currentPage=0;
$this->loadPage();
}
Возвращает итератор к началу списка. Этот метод требуется интерфейсом Iterator.
valid() метод
public boolean valid() | ||
| {return} | логическое | true, если индекс валиден |
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