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 :

Persistance des objets


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    257
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 257
    Par défaut Persistance des objets
    Bonjour!

    Ayant développé en Java et utilisant la POO, je souhaite utiliser la puissance de la POO en php.

    Mais je cherche à comprendre comment gérer la persistance des objets en php.

    Après des recherches sur le net, j'ai vu que l'on pouvait stocker les données dans des variables de sessions, un fichier xml, ou un BDD.

    Mais cette solution ne fait elle pas que stocker les données de l'objet (propriétés), et non l'objet lui même?

    Par exemple, si j'ai une classe Joueur avec différentes propriétéss (score, pseudo etc.) que j'instancie en Joueur1. Je peux effectivement stocker ces données dans des variables de session.

    Mais quand je vais aller sur une autre page, je vais devoir instancier un nouvel objet, et attribuer les valeurs qui sont en variable de session. C'est bien ça?

    Si c'est le cas, on doit ré-instancier tous les objets à chaque page?

    Merci pour votre aide.

    A+

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    957
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 957
    Par défaut
    Non, tu peux directement mettre en Session tes objets et les récupérer tel quel a la sortie. A l'exception près des connexions a la base de données ou autre service. Tu peux te servir de la method magic __wakeup pour récuperer tes connexions.

    http://uk.php.net/manual/fr/language...p5.magic.sleep

  3. #3
    Membre éclairé
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    257
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 257
    Par défaut
    Salut et merci pour ta réponse!

    Pour prendre un exemple concret, j'utilise une classe avec différentes méthodes me permettant de centraliser les accès à la base de données.

    En php5, je crois qu'il est possible de définir cette classe comme abstraite, comme en java, et de pouvoir l'utiliser de partout sans l'instancier (un simple include).

    En php4, y a t-il un équivalent ou suis-obligé d'instancier la classe, par exemple, lors de la connexion au back office et de la passer en variable de session?

    A l'heure actuelle, j'instancie la classe à chaque utilisation, ce qui n'est pas top pour une classe dite statique.

    Merci par avance

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    957
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 957
    Par défaut
    Oui les classes peuvent être abstraite en PHP5.
    Tu utilises PHP4 ou PHP5 ?

    A l'heure actuelle, j'instancie la classe à chaque utilisation, ce qui n'est pas top pour une classe dite statique.
    c'est a dire ?

  5. #5
    Membre éclairé
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    257
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 257
    Par défaut
    Merci pour ta réponse.

    En effet, j'avais lu qu'on pouvait faire des classes abstraites en php5, ce qui correspond bien a mon besoin : une classe avec les accès mysql qui centralise simplement des méthodes, donc pas besoin d'avoir d'instances multiples.

    Par contre pour un projet actuel, je suis en php4. Donc il me semble qu'il n'est pas possible d'avoir une classe abstraite ou statique, afin de ne pas avoir à l'instancier, je me trompe?

    Si c'est le cas, quel alternative j'ai? Car comme je l'ai dis, pour l'instant la classe est instancier dans chaque page.

    Merci

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 625
    Par défaut
    Dans tous les cas, ta classe devra réinitialiser la connexion à la BDD, et cela ne peut être fait par une classe statique sans passer par un appel de méthode alors que tu peux le faire au niveau du constructeur lors de l'instanciation.

    L'idéal dans ton cas serait d'utiliser un singleton dont tu peux récupérer l'instance à n'importe quel niveau de ton script.

    [Edit] PHP4 ne permet pas vraiment d'être carré sur un pattern singleton mais tu peux toujours "simuler" le système.

  7. #7
    Membre émérite
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    957
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 957
    Par défaut
    Ce n'est pas bien grave qu'elle soit instancier dans chaque page dans la mesure ou tu es dans un mode déconnecté de plus tu ne pourras pas partager cet objet dans toute ton application. La persistence n'est pas son point fort de PHP4.

    A mon avis le plus important c'est d'avoir une seule connexion a la base de données par page (Singleton).

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

Discussions similaires

  1. Persistance des objets
    Par princenourdino dans le forum Débuter
    Réponses: 1
    Dernier message: 08/11/2010, 11h40
  2. problème avec la persistance des objets
    Par gentil dans le forum Hibernate
    Réponses: 15
    Dernier message: 04/04/2007, 11h44
  3. Persister des objets etendus
    Par Alec6 dans le forum Hibernate
    Réponses: 3
    Dernier message: 20/03/2007, 00h01
  4. Persistance des objets : comment ?
    Par SteelBox dans le forum C++
    Réponses: 1
    Dernier message: 28/11/2005, 21h47
  5. [Struts][DynaActionForm et persistance des objets]
    Par jcos dans le forum Struts 1
    Réponses: 4
    Dernier message: 22/12/2004, 09h15

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