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

Langage PHP Discussion :

[POO] Singleton et changement de page


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 260
    Points : 131
    Points
    131
    Par défaut [POO] Singleton et changement de page
    Bonjour,

    Je m'initie à la POO avec PHP5 et je rencontre un petit problème que je voudrais comprendre (enfin savoir s'il est normal ou pas et s'il y a un moyen de la résoudre).

    Voila j'ai un classe Singleton, qui est défini avec la méthode getInstance en static etc... (enfin c'est la meme que toute celles qu'on peut trouver sur le net quoi).

    Quand je l'appelle deux fois dans une même classe, tout marche très bien, la première fois getInstance appelle le constructeur, la seconde il renvoie la première instance déjà crée.

    Mon problème se situe lors du chargement d'une autre page. Si j'ai un formulaire dans la page que je valide par exemple, lors du chargement de la page il crée un nouvelle objet de la classe Singleton.

    Je voudrais savoir comment je pourrai faire pour recupérer celui créé la page précèdente qui contient les infos que je dois garder malgré le changement de page.

    Merci pour votre aide.

    PS : j'espère que c'est clair.

  2. #2
    Membre expérimenté
    Avatar de guitou12
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 077
    Points : 1 561
    Points
    1 561
    Par défaut
    A chaque changement de page tout objet instancié est recréé c'est tout à fait normal.

    Si tu veux conserver un objet il va falloir que tu le conserves en session pour pouvoir le passer entre tes différentes pages.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 260
    Points : 131
    Points
    131
    Par défaut
    Autrement dit le singleton est inutile en fait ?

    parce que si on met les infos en session, autant les recuperer directement dans la session plutot que de recréer un Singleton en récupérant les infos de la session pour ensuite recupérer les infos dans le singleton.

    Y'a-t-il quelque chose que je n'ai pas compris ?

  4. #4
    Membre expérimenté
    Avatar de guitou12
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 077
    Points : 1 561
    Points
    1 561
    Par défaut
    Citation Envoyé par RR instinct
    Autrement dit le singleton est inutile en fait ?

    parce que si on met les infos en session, autant les recuperer directement dans la session plutot que de recréer un Singleton en récupérant les infos de la session pour ensuite recupérer les infos dans le singleton.

    Y'a-t-il quelque chose que je n'ai pas compris ?
    Je t'avoue que je gère moyen le singleton en fait mais j'avais vu ça dans le code du CRM Xoops et l'intérêt était qu'une et une seule instance de l'objet soit présente dans tout le code (qu'elle soit en mémoire ou non )

    Dans le cas que je cite c'était la gestion des requêtes passées à la base qui étaient entrées dans l'objet, donc si 2 objets existent on peut en conclure que des données passent à la trappe quelquepart. Avec une classe en singleton on est sur que tout ce qui passe par la classe machin ne le sera que par 1 et 1 seul objet unique.

    J'espère que j'ai été clair dans mes propos.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 260
    Points : 131
    Points
    131
    Par défaut
    Je comprend qu'en fait, y'a pas tellement d'avantage a utiliser le singleton avec PHP, enfin pas pour ce que je veux faire, mieux vaut directement lire dans la session ou dans un cookie.

    Merci pour ton aide

  6. #6
    Membre expérimenté
    Avatar de guitou12
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 077
    Points : 1 561
    Points
    1 561
    Par défaut
    Citation Envoyé par RR instinct
    Je comprend qu'en fait, y'a pas tellement d'avantage a utiliser le singleton avec PHP, enfin pas pour ce que je veux faire, mieux vaut directement lire dans la session ou dans un cookie.

    Merci pour ton aide
    PS1 : Pense à sérializer ton objet avant de le passer en session pour éviter tout souci et ça devrait rouler

    PS2 : je sais pas si ça te concerne mais un objet SimpleXML ne se passe pas en session (j'en ait bavé la dessus )

  7. #7
    Membre à l'essai

    Inscrit en
    Décembre 2002
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 19
    Points : 23
    Points
    23
    Par défaut
    Heuuuuuuuu ton singleton ne doit pas etre un vrai singleton


    tu as mis ton attribut en static ????

    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
     
    class MonSingleton{ 
     
     private static $monobj = null;
     
      private MonSingleton(){}
     
      public static function getInstance() {
     
        if($monobj == null){
          monobj = new MonSingleton();
     
        }
         return $monobj;
      }
    }

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 22/06/2007, 16h51
  2. [FPDF] Tableaux : besoin d'aide pour détecter le changement de page
    Par vallica dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 26/06/2006, 21h15
  3. affectation de valeur sans changement de page
    Par clancy182 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 08/05/2006, 18h08
  4. Etat : changement de page
    Par nicoaix dans le forum Access
    Réponses: 2
    Dernier message: 21/02/2006, 13h22
  5. Réponses: 9
    Dernier message: 16/01/2006, 15h16

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