Reldan
Messages postés14Date d'inscriptionmercredi 27 octobre 2010StatutMembreDernière intervention27 mai 2013
-
13 avril 2012 à 18:11
Reldan
Messages postés14Date d'inscriptionmercredi 27 octobre 2010StatutMembreDernière intervention27 mai 2013
-
13 avril 2012 à 18:11
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
13 avril 2012 à 18:11
Dblist doit implémenter Countable en plus de Iterator (c'est quand même pratique)
on ajoute donc une methode count() et une methode exec() qui factorise le code issu de rewind() :
public function count() {
$this->exec();
return $this->nbTotal;
}
public function rewind() {
$this->exec();
$this->position = 0;
}
protected function exec() {
// genere l'id courant
$this->idList = $this->getListId();
// test si la requete est deja lance
if(!isset($this->lists[$this->idList])){
// instanciation dao
if(!isset($this->dao)) $this->dao = DbFactory::getDb($this->dbName);
// lance la requete
$query = $this->getQuery();
if($this->debug) echo __METHOD__.' ('.__LINE__.') requete : '.$query;
$this->nbTotal = $this->dao->execute($query, $this->page, $this->nbPerPage);
if($this->nbTotal){
$this->lists[$this->idList] = $this->dao->getArray();
if($this->page && $this->nbPerPage && ($this->nbTotal > $this->nbPerPage)){
$this->nbPage = ceil($this->nbTotal / $this->nbPerPage);
}
}
// enregistre l'instance de classe
self::$instance[$this->className] = $this;
}
}