Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 11-08-2007 20:48:39

coco
Nouveau membre
Date d'inscription: 11-08-2007
Messages: 2

singleton et ZF

Bonjour,

je découvre tout juste le php objet et ZF.
j'ai fais mes débuts via le tuto Getting Started with the Zend Framework et j'essaie maintenant d'y intégrer un singleton.

J'ai donc innocemment créé, en tant que model, quelquechose de ce style :

Code:

class Singleton {
    private static $_instance;

    private function __construct(){
    }

    public static function getInstance() {
        if (!isset(self::$_instance) ) {
            self::$_instance = new Singleton();
        }
        return self::$_instance;
    }
}

que je load via loadClass() directement dans le bootstrap.

de ce que j'ai compris...
2 appels successifs de Singleton::getInstance(); au sein d'un même controller me renvoient bien à une unique instance.

en revanche, après un _redirect(), l'appel de getInstance() depuis un controller différent du premier me créé un nouvel objet : chose que je ne veux évidement pas.

je n'ai pas forcément tout compris sur la question de portée des variables au sein du ZF..
si bien que ce soit une mauvaise implémentation, mauvaise utilisation ou incompréhension générale... je ne n'ai pas la solution.

auriez vous une piste à me suggérer?

Hors ligne

 

#2 12-08-2007 10:34:54

philippe
Administrateur
Lieu: Grenoble
Date d'inscription: 01-03-2007
Messages: 1624

Re: singleton et ZF

Bonjour,

Ton problème n'est pas lié au ZF. C'est du PHP standard. Quand tu fais un singleton, c'est effectivement une instance unique dans ton script, hors quand tu fais un _redirect, tu appelles un autre script (ça fait une redirection 302). Ton singleton est donc détruit lors de la redirection. Quand tu appelles getInstance() de nouveau c'est normal qu'il appelle de nouveau le constructeur.

Si tu veux conserver un objet sur 2 pages, il faut regarder du coté des sessions (et il faut que ton objet soit sérialisable).

A+, Philippe


twitter : @plv ; kitpages.fr : Création de sites internet à Grenoble et Paris

Hors ligne

 

#3 12-08-2007 10:50:52

Julien
Membre
Date d'inscription: 16-03-2007
Messages: 501

Re: singleton et ZF

Il faut bien faire la différence dans le MVC de ZF, entre un __redirect(), qui va en effet relancer une instance par redirection HTTP 302 (comme si le navigateur client avait cliqué sur un lien) , et un __forward(), qui va relancer une boucle de dispatching dans le même processus PHP, et donc garder la mémoire intacte, et ses singletons.

Hors ligne

 

#4 12-08-2007 11:25:16

coco
Nouveau membre
Date d'inscription: 11-08-2007
Messages: 2

Re: singleton et ZF

ok, aucune magie mais une simple requête http, on cherche souvent trop compliqué.
découvrir consiste à voir comme tout le monde et à réfléchir comme personne..
je vous remercie.

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