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_Db PHP Discussion :

Singleton , registery ? [ZF 1.9]


Sujet :

Zend_Db PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut Singleton , registery ?
    Bonjour à tous,
    travaillant actuellement avec un framework maison et ne souhaitant pas utiliser ZF dans sa totalité , j'ai incorporer certains composants (Zend_db,Zend_Config,Zend_registery) à mon framework.

    Je travaillais jusqu'à maintenant avec un singleton PDO, donc dès qu'une des classes du framework avait besoin d'une connexion à la bdd je faisais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->oSql = Db_SPDO::getConnection();
    Avec Zend_db , je n'ai pas vu de singleton (peut être ai je mal cherché ?). D'où ma question , comment passer efficacement mon objet Zend_Db à mes classes ?

    Est ce une bonne pratique de placer l'objet Db dans un registre ?
    Devrait je plutôt ajouter une methode getDb() à toutes les classes qui en ont besoin et leur passer l'objet Zend_db ?
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Tu passais par une méthode statique, passe par une instance d'un objet

    La classe db

    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
     
    class maDb{
        private $_db = null;
        public function __construct () {
            $params = array(
     
                    'host' => 'localhost' ,
                    'username' => '****' ,
                    'password' => '******' ,
                    'dbname' => 'latable'
            );
            try {
                $this->_db = Zend_Db::factory('PDO_MYSQL', $params);
                $this->_db->getConnection();
                return $this->_db;
     
            } catch (Zend_Db_Adapter_Exception $e) {
                echo $e->getMessage();
            }
     
        }
    }
    Ta connection

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $this->oSql = new maDb();

  3. #3
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Mon but est en fait d'éviter de lancer de multiples connexions.
    J'ai dans mon index.php que l'on pourrait qualifier de bootstrap, l'initialisation de ma connection à la bdd :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $configIni = new Zend_Config_Ini('config.ini','dev');
    $db = Zend_Db::factory($config->database);
    Zend_Registry::set('Db',$db);
    J'aimerais donc éviter dans les classes qui seront utilisées un peu plus bas de rouvrir une connexion.
    A moins que Zend_Db gère celà seul et qu'une nouvelle instance dans une de mes classe n'ouvrira pas de nouvelle connexion ?

    Actuellement je passe par le registre et est transformé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    class Auth_Auth
    {
        private $oSql;
        public function __construct()
       {
            $this->oSql = Db_SPDO::getConnection();
       }
    }
    en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    class Auth_Auth
    {
        private $oSql;
        public function __construct()
       {
            $this->oSql = Zend_Registry::get('Db');
       }
    }
    Mais je ne sais pas ce que cela vaut de trimballer l'objet db dans le registre
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Je l'utilise de cette façon également, en gardant la connection dans le Zend_registry.

    Je ne vois pas ou cela pourrais poser problème !

  5. #5
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Citation Envoyé par MaitrePylos Voir le message
    Je ne vois pas ou cela pourrais poser problème !
    Je ne voyais pas de problème particulier non plus , mais ne connaissant que très peu ZF , je préférais ne pas passer à coté d'une éventuelle subtilité

    Merci en tout cas
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. [Servlet]Singleton & cache
    Par lucimast dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 15/12/2004, 16h36
  2. Singleton héritable ?
    Par rolkA dans le forum C++
    Réponses: 10
    Dernier message: 11/12/2004, 16h22
  3. [Débutant] pattern singleton
    Par SirDarken dans le forum Débuter avec Java
    Réponses: 22
    Dernier message: 11/12/2004, 01h55
  4. Mutiple row in singleton select ????? [Important, merci]
    Par SkyDev dans le forum Bases de données
    Réponses: 6
    Dernier message: 20/04/2004, 14h02
  5. [debutant]Singleton
    Par bafman dans le forum Langage SQL
    Réponses: 6
    Dernier message: 13/01/2004, 15h41

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