Профессиональное программирование на PHP

Страница 67 из 591


70 Глава 2 Объектно-ориентированное программирование...

}

$this->done = true;

$this->currlndex = $this->rowlndex = count($this->result) - l■ return $this;

}

public function nextO {

if($this->done) { ^ return false;

$offset = $this->currlndex + i; if(!$this->result [$offset]) {

$row = $this->stmt->fetch assocО; if(!$row) {

$this->done = true; return false;

$this->result[$offset] = $row; ++$this->rowlndex; ++$this->currlndex; return $this;

}

else {

++$this->currIndex; ^ return $this;

public function prev() {

if($this->currlndex == 0) { return false;

--$this->currIndex; return $this;

} }

Ниже приводятся некоторые замечания о классе DB_Result.

 Его конструктор использует контроль типов, чтобы гарантировать, что пере данная ему переменная является объектом класса DB_Statement. Так как реализации итератора зависят от $stmt, согласующегося с API DB_Statement, контроль типов в данном случае представляет собой проверку данных.

 Для получения результатов используется отложенная инициализация, то есть они не создаются до тех пор, пока не понадобятся. В частности, отдельные строки только наполняют DB_Result: : result, когда объект DB_Result перемещается вперед к их следующему индексу в результирующем множестве До этого никакого пополнения не происходит. В главе 10, "Кэширование данных" будет показано, почему это важно. Здесь достаточно сказать, что отложенная инициализация позволяет избежать выполнения работы, которая может никогда не потребоваться.




  Hostland.Ru

 «Бесплатный хостинг Hostland.Su» © 2006