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 :

design pattern, singleton


Sujet :

MVC PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 24
    Par défaut design pattern, singleton
    Bonjour a tous,

    Voila je vais essayer d'expliquer mon problême, j'ai commencer un peu avec zend framework, je n'est pas trop de probleme a faire ce que j'ai envie, avec un peu de recherche je trouve les solutions mais quelque chose m'embête c'est que souvent je ne comprend pas vraiment le "pourquoi du comment".

    Par exemple cette ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $fc = Zend_Controller_Front::getInstance();
    Donc j'ai été voir dans le dossier library et j'ai essayé de comprendre ... le probleme c'est que le code commence par 4 require_once, et donc je me sens pas plus avancé, mais a un moment dans le code je vois:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
        /**
         * Singleton instance
         *
         * @return Zend_Controller_Front
         */
        public static function getInstance()
        {
            if (null === self::$_instance) {
                self::$_instance = new self();
            }
            return self::$_instance;
        }
    Donc la j'ai eu le un déclic je me suis dit que apprendre quelques motifs de conception serais peut etre une bonne chose pour comprendre ce framework ? (c'est ma premiere question)

    Alors je me suis à rechercher des documents sur les singleton, je m'aperçois enfaite que c'est toujours la même chose et c'est pas trop dur a coder:

    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
    class maSing
    {
        private static $instance = false;
     
        private function __construct()
        {
            echo "instantiation de maSing";
        }
     
        public static function getInstance()
        {
            if(self::$instance === false)
            {
                self::$instance = new maSing();
            }
            return self::$instance;
        }
     
        static function afficher()
        {
            return "l instance";
        }
    }
     
    echo maSing::getInstance()->afficher();
    echo '<br />';
    echo maSing::getInstance()->afficher();
    echo '<br />';
    echo maSing::getInstance()->afficher();
    Donc en executant ce code je vois bien que je passe qu'une fois dans le constructeur, ok donc c'est justement l'interet de ce motif d'après les documents que j'ai trouvé, ce qui m'amène a ma deuxieme question:

    Dans quel cas ce motif est indispensable ? comment ce comporterait par exemple Zend_Controller_Front si ce singleton n'y était pas ? quel changement il y aurais ? des risques niveau sécurité ?

    (pardonnez moi mon orthographe, il faudrais aussi que je me penche la dessus mais j'ai pas du tout la même motivation que avec le PHP)

  2. #2
    Membre Expert
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Par défaut
    Bonsoir,

    je ne connais pas le front-end zend, je ne serais donc pas objectif de ce côté.

    Le singleton n'est, d'après moi, pas indispensable, mais il apporte un confort est une sécurité en même temps, le confort parce qu'il permet de gagner en performance quand il n'y a pas besoin de créer de multiples instances d'objet alors qu'une seule suffit. La sécurité parce que l'on sait que tout objet partage le même état de l'objet singleton.

    L'exemple le plus utilisé est sans doute l'objet fournissant une connexion à un SGBD.


  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 24
    Par défaut
    Bonsoir, merci beaucoup d'avoir pris le temp de me répondre.

    L'exemple le plus utilisé est sans doute l'objet fournissant une connexion à un SGBD.
    un objet comme celui de PDO par exemple ?

    D'apres ce que j'ai lus PDO correspondrait a un motif (structure adaptateur) ou un mélange des deux? mais bon j'ai pas approndi le truc, je vais essayer de pas tout melanger et d'apprendre une chose à la fois.

    Le singleton n'est, d'après moi, pas indispensable
    Enfaite après avoir enchainer plusieurs articles la dessus c'est ce que je commence a pensé aussi, c'est pour cette raison que j'aimerais savoir la différence qu'il pourrais y avoir dans le framework, mais je serais bien incapable de modifier la class pour en changer le comportement, enfin si mais je pense qu'elle aurais plus aucun comportement .. le code est quand même d'un niveau assez hard.ou même un simple exemple ou ce motif est indispensable au bon fonctionnement de l'application.

  4. #4
    Membre chevronné

    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2003
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2003
    Messages : 253
    Par défaut
    Hello

    Concernant le Front Controller du Zend Framework, il s'agit d'un des cas les plus indiscutablement utile pour un singleton.

    Vois le Front Controller comme un chef d'orchestre, il rassemble tous les éléments nécessaires au fonctionnement d'une application Zend MVC et les déclenche au moment opportun, il ne peut donc y en avoir qu'un par appel et un seul.

    Si le singleton est utile pour limiter les instances à une (ou un nombre réduit dans certains autres cas), il l'est également pour retrouver un objet où que l'on soit dans le code. Partout dans ton application, tu peux retrouver une instance du front controller via Zend_Controller_Front::getInstance().

    Comme il t'a déjà été répondu, non le singleton n'est pas indispensable, mais lorsque l'on peut spécifier avec précision un comportement (ici celui de se limiter à une instance d'un objet) c'est d'autant plus sûr et plus clair pour l'utilisateur final, car sans même lire la doc, on se rend compte assez vite qu'on ne peut en avoir qu'un seul et éviter des comportements aux conséquences très imprévisibles.

    Le mieux pour te lancer dans le Zend Framework, même si c'est pénible, c'est déjà de bénéficier d'une expérience objet significative, et ensuite se manger toute la doc Zend concernant Zend_Controller, Zend_View et Zend_Db, qui me paraissent la base pour bien cerner l'ensemble. Ensuite, Zend_Validate, Zend_Filter et Zend_Form me paraissent la suite logique.

    Voici un lien qui devrait t'aider à mieux cerner le fonctionnement du Front Controller et des différents éléments qu'il encapsule :
    http://framework.zend.com/manual/en/...er.basics.html

    Bon courage pour l'apprentissage du Zend Framework, et j'espère que ça t'auras un peu éclairé

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 24
    Par défaut
    Ok nighty je commence a mieux comprendre le role d'un singleton (en théorie pour l'instant), enfaite je ne sais pas si c'est le bon mot mais ca me parait être plus une question "d'assurance" d'obtenir quelque chose .Mon but à la base n'est pas trop de me servir du framework mais a ce que j'ai compris c'est une reference concernant les bonnes pratiques de programmation (en MVC), donc j'ai commencer a l'utiliser pour voir le fonctionnement général, puis je vais approndir de plus en plus, je vais déja lire ton lien, en tout les cas meilleur beaucoup a vous deux pour vos conseil, vous êtes formidable.

Discussions similaires

  1. design pattern Singleton
    Par secksy dans le forum Débuter
    Réponses: 4
    Dernier message: 24/11/2009, 10h18
  2. scope application et design pattern singleton
    Par totoche dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 01/10/2008, 15h56
  3. [Singleton] Classe static ou Design Pattern Singleton ?
    Par piloupy dans le forum Design Patterns
    Réponses: 15
    Dernier message: 01/08/2008, 16h04
  4. Réponses: 1
    Dernier message: 04/07/2008, 14h53
  5. Implémentation du design pattern singleton
    Par 0pierrot0 dans le forum C++
    Réponses: 1
    Dernier message: 22/01/2008, 10h01

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