Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Dans le quickstart de Zend il y une méthode fetchAll comme ceci :
public function fetchAll() { $resultSet = $this->getDbTable()->fetchAll(); $entries = array(); foreach ($resultSet as $row) { $entry = new Default_Model_Guestbook(); $entry->setId($row->id) ->setEmail($row->email) ->setComment($row->comment) ->setCreated($row->created) ->setMapper($this); $entries[] = $entry; } return $entries; }
Mais j'ai vu que à chaque fois qu'on fait une classe par rapport à une table en suivant le modèle du quickstar ça devenais assez lourd et pas optimisé.
Car en fait à chaque champ dans la base on doit faire :
->setEmail($row->email) ->setComment($row->comment) ->setChamp($row->champ) ->setChamp($row->champ) ->setChamp($row->champ) ->setChamp($row->champ) ->setChamp($row->champ)
Donc je me suis lancer dans des améliorations mais comme je suis pas au dessus des personnes qui ont fait le quickstar je vous demande conseils/approbations/améliorations
En partant de la class du quickstar :
Dans la class Mapper :
public function fetchAll($condition) { $resultSet = $this->getDbTable()->fetchAll(); $entries = array(); foreach ($resultSet as $row) { $entry = new Backend_Model_Guestbook(); $entry ->SetObjectToForm($row->toArray()); ->setMapper($this); $entry ->setOptions($entry ->get('ObjectToForm')); $entries [] = $entry ; } return $blacklists; }
Dans la class new Backend_Model_Guestbook :
//Déclaration d'un nouvelle variable protected $_ObjectToForm = "" ;
J'ai modifier un peu la méthode setOptions :
public function setOptions(array $options){ foreach ($options as $key => $value) { if(property_exists($this, '_'.$key)) $this->setVar($key,$value); } return $this; }
Et on peut faire la même chose pour la méthode find()
De plus la variable ObjectToForm me sert pour remplir les champs des Forms.
Par contre j'ai une question est-ce obligatoire de mettre :
->setMapper($this);
Et à quoi ça sert exactement ?
Merci les Zender's pour vos commentaires
Dernière modification par GueloSuperStar (09-12-2009 12:36:57)
Hors ligne
UP merci les Zender's
Hors ligne