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;
    }

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)

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;
    }

Dans la class new Backend_Model_Guestbook :

Code:

//Déclaration d'un nouvelle variable
protected $_ObjectToForm = "" ;

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;
    }

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);

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