Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 09-12-2009 12:32:10

GueloSuperStar
Membre
Lieu: Paris
Date d'inscription: 05-08-2009
Messages: 107

Class fetchAll (quickstart)

Dans le quickstart de Zend il y une méthode fetchAll comme ceci :

Code:

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;
    }
Ajoutez [lang=php|phtml|javascript|sql|perl|xml|shell|html] au début de votre code pour activer le syntax highlighting

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 :

Code:

 ->setEmail($row->email)
->setComment($row->comment)
->setChamp($row->champ)
->setChamp($row->champ)
->setChamp($row->champ)
->setChamp($row->champ)
->setChamp($row->champ)
Ajoutez [lang=php|phtml|javascript|sql|perl|xml|shell|html] au début de votre code pour activer le syntax highlighting

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 :

Code:

    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;
    }
Ajoutez [lang=php|phtml|javascript|sql|perl|xml|shell|html] au début de votre code pour activer le syntax highlighting

Dans la class new Backend_Model_Guestbook :

Code:

//Déclaration d'un nouvelle variable
protected $_ObjectToForm = "" ;
Ajoutez [lang=php|phtml|javascript|sql|perl|xml|shell|html] au début de votre code pour activer le syntax highlighting

J'ai modifier un peu la méthode setOptions :

Code:

    public function setOptions(array $options){
        foreach ($options as $key => $value) {
            if(property_exists($this, '_'.$key))
                $this->setVar($key,$value);
        }
        return $this;
    }
Ajoutez [lang=php|phtml|javascript|sql|perl|xml|shell|html] au début de votre code pour activer le syntax highlighting

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 :

Code:

->setMapper($this);
Ajoutez [lang=php|phtml|javascript|sql|perl|xml|shell|html] au début de votre code pour activer le syntax highlighting

Et à quoi ça sert exactement ?

Merci les Zender's pour vos commentaires

Dernière modification par GueloSuperStar (09-12-2009 12:36:57)


A+ Guelo Super Star

Hors ligne

 

#2 11-12-2009 16:01:41

GueloSuperStar
Membre
Lieu: Paris
Date d'inscription: 05-08-2009
Messages: 107

Re: Class fetchAll (quickstart)

UP merci les Zender's


A+ Guelo Super Star

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages