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

Zend Framework PHP Discussion :

Interface fluide avec Zend_Db_Table_Abstract ? [ZF 1.10]


Sujet :

Zend Framework PHP

  1. #1
    Rédacteur
    Avatar de Halleck
    Homme Profil pro
    Consultant PHP
    Inscrit en
    Mars 2003
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Consultant PHP

    Informations forums :
    Inscription : Mars 2003
    Messages : 597
    Points : 878
    Points
    878
    Par défaut Interface fluide avec Zend_Db_Table_Abstract ?
    Bonjour tout le monde,

    dans les tutos, je vois systématiquement ce type de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    class Machin extends Zend_Db_Table_Abstract {
        protected $_name = 'xxxx';
        protected $_primary = 'xxxxx';
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $machin = $monMachin->find(xxx)->current();
    $machin->var1 = 'xxx';
    $machin->var2 = 'xxx';
    $machin->var3 = 'xxx'
    Et jamais d'interface fluide :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $machin
    	->set('var1', 'xxx')
    	->set('var2', 'xxx')
    	->set('var3', 'xxx')
    	->set('var4', 'xxx');
    Existe t-il une possibilité pour pouvoir utiliser (simplement) une interface fluide pour les objets héritant de Zend_Db_Table_Abstract ?

    Je vois bien la solution de faire une classe qui hérite de Zend_Db_Table_Abstract, qui elle contient une méthode set/get, puis de faire hériter toutes mes classes de ma classe personnalisée, mais je trouve ça particulièrement laid (tout autant que de ne pas utiliser d'interface fluide pour cet exemple)
    Zend PHP Certified Engineer, Certifié Symfony2
    blog : blog.lepine.pro
    Secrétaire de l'AFUP (Association des Utilisateurs de PHP)

  2. #2
    Membre habitué
    Homme Profil pro
    Ingenieur BI - Dev Web Senior
    Inscrit en
    Décembre 2009
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingenieur BI - Dev Web Senior

    Informations forums :
    Inscription : Décembre 2009
    Messages : 118
    Points : 167
    Points
    167
    Par défaut
    Bonjour,

    Quand on fait ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $machin = $monMachin->find(xxx)->current();
    le résultat (dans ce cas $machine) est de type stdClass (vérifie a l'aide de .
    Le type stdClass accepte ce genre de manipulation Quand tu propose de créer une classe intermédiaire, tu veux désactiver carrément l'affectation directe ou juste pour implémenter une interface?


    Cordialement.

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 178
    Points : 230
    Points
    230
    Par défaut
    hello,

    ce n'est pas une interface fluide mais j'utilise régulièrement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $row->setFromArray(array(
        'k' => 'v',
        'k2' => 'v2',
        'k3' => 'v3',
    ))
    Si le dev de Zend_Db_Table_Row n'a pas mis en place une interface fluide, je vois pas comment elle pourrait être ajoutée sans intervention de ta part

  4. #4
    Rédacteur
    Avatar de Halleck
    Homme Profil pro
    Consultant PHP
    Inscrit en
    Mars 2003
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Consultant PHP

    Informations forums :
    Inscription : Mars 2003
    Messages : 597
    Points : 878
    Points
    878
    Par défaut
    le setFromArray() peut être une solution oui.

    Par classe intermédiaire, j'entendais juste un truc plutôt simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    class Zend_Db_Table_Abstract_Custom extends Zend_Db_Table_Abstract {
     
    	public function set($var, $value) {
    		$this->$var = $value;
    		return $this;
    	}
     
    	public function get($var) {
    		return $this->$var;
    	}
    }
     
    class Toto extends Zend_Db_Table_Abstract_Custom {
    }
    Mais je ne pense pas que ce soit une bonne idée (si on commence à casser une architecture comme ça, après...)

    Merci !
    Zend PHP Certified Engineer, Certifié Symfony2
    blog : blog.lepine.pro
    Secrétaire de l'AFUP (Association des Utilisateurs de PHP)

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 178
    Points : 230
    Points
    230
    Par défaut
    Oui, dans ton cas surclasser juste pour l'interface fluide ne vaut pas le coup.
    Ce serait différent si tu avais déjà codé une classe intermédiaire pour ajouter de «vraies» fonctionnalités, là l'interface fluide en bonus ça pourrait être sympa.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant]Interface graphique avec eclipse
    Par steelidol dans le forum Eclipse Platform
    Réponses: 5
    Dernier message: 08/06/2006, 13h12
  2. [Plugin][VE]Interface graphique avec VE
    Par GENERYS dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 24/06/2005, 11h40
  3. Interface graphique avec plusieurs fenêtres
    Par Copps dans le forum Agents de placement/Fenêtres
    Réponses: 4
    Dernier message: 30/03/2005, 18h00
  4. [VB6] [Interface] Grille avec combobox
    Par khany dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 15/01/2003, 09h55
  5. interface utilisateur avec OpenGL
    Par demis20 dans le forum OpenGL
    Réponses: 6
    Dernier message: 03/10/2002, 12h27

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