IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MVC PHP Discussion :

Les classes / modèles


Sujet :

MVC PHP

  1. #21
    Membre confirmé Avatar de ToxiK
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 152
    Par défaut
    @CinePhil

    $enreg est un enregistrement, j'ai enlevé un bout de code pour alléger...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $rs = mysql_query($req);
     
    $enreg = mysql_fetch_array($rs);

    @manuscle

    C'est vrai que je n'y avait pas songé, mais ma méthode de récupération des données exécute beaucoup de requête SQL alors que je ne pourrais en faire qu'une seule avec une jointure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    $req = 'SELECT * FROM parties p INNER JOINT terrain t ........';
     
    tant que $enreg = une ligne de mon jeu d'enregistrement
     
        $unePartie = new Partie();
        $unePartie->id = $enreg->id;
        $unePartie->nom = $enreg->nom;
     
        $unTerrain = new Terrain();
        $unTerrain->id = $enreg->id_terrain;
        $unTerrain->nom = $enreg->nom_terrain;
     
        $unePartie->terrain = unTerrain;
     
         ajoute $unePartie dans $tableau_parties
     
    fin tant que
     
    return tableau_parties
    Ca serait une solution possible non ?

    Je ne vois pas trop d'utilisation de classes qui appelent les models avec ZF, est-ce que c'est déconseillé ?

  2. #22
    Membre chevronné Avatar de manuscle
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2004
    Messages
    488
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2004
    Messages : 488
    Par défaut
    Adapte et essaie ça (j'ai pas testé) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
     
    <?php
    /**
     *
     * Permet d'avoir une table jointe en Rowset de resultat
     *
     */
    class TPapa extends Zend_Db_Table_Abstract
    {
        protected $_name = 'papa';
        protected $_primary = 'id';
        protected $_rowClass = 'RPapa';
     
        public function getPapasAvecEnfants()
        {
            $papas = $this->fetchAll();
            $TEnfants = new TEnfants();
            $enfants = $TEnfants->fetchAll();
     
            foreach($papas as $pkey=>$papa) {
     
                $rowSet = new RowsetSpecial(
                        array(
                            'table' => $TEnfants,
                            'tableClass' => get_class($TEnfants)
                        ));
     
                foreach ($enfants as $ekey=>$enfant) {
                    if ($enfant->id_papa == $papa->id) {
                        $rowSet->offsetSet($ekey, $enfant);
                    }
                }
                $papa->enfants = $rowSet;
                $papas->offsetSet($pkey, $papa);
            }
            return $papas;
        }
    }
     
    class RPapa extends Zend_Db_Table_Row_Abstract
    {
        /**
         *
         * @var Zend_Db_Table_Rowset_Abstract
         */
        public $enfants = null;
    }
     
    class TEnfants extends Zend_Db_Table_Abstract
    {
        protected $_name = 'enfant';
        protected $_primary = 'id';
    }
     
    class RowsetSpecial extends Zend_Db_Table_Rowset
    {
        public function  __construct($options = array()) {
            parent::__construct($options);
        }
        public function  offsetSet($offset, $value) {
            $this->_data[$offset] = $value;
        }
    }
     
     
    $TPapa = new TPapa();
     
    foreach ($TPapa->getPapasAvecEnfants() as $key => $papa) {
        echo '* '.$papa->nom . '<br />';
     
        foreach ($papa->enfants as $enfant) {
            echo '*** ' . $enfant->nom . '<br />';
        }
    }
    EDIT: j'ai rajouté la classe rowsetSpecial

  3. #23
    Membre confirmé Avatar de ToxiK
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 152
    Par défaut
    Merci, ça à l'air sympa comme solution.

    Je vais tester ça avec mon cas réel

Discussions similaires

  1. Réponses: 14
    Dernier message: 22/12/2014, 00h20
  2. Réponses: 2
    Dernier message: 05/07/2010, 12h13
  3. Réponses: 6
    Dernier message: 05/11/2008, 14h06
  4. Réponses: 31
    Dernier message: 30/03/2006, 17h57
  5. Les classes amies en Delphi
    Par Bruno75 dans le forum Langage
    Réponses: 3
    Dernier message: 02/09/2003, 20h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo