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] Objet d une classe dans une variable de session [Fait]


Sujet :

Langage PHP

  1. #1
    Membre averti Avatar de Seth77
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2005
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 448
    Points : 410
    Points
    410
    Par défaut [POO] Objet d une classe dans une variable de session
    Slu

    est ce possible ? et comment ensuite acceder aux fonctions de l objet a travers la variable de session ?

    thx @+

  2. #2
    Membre éprouvé
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Points : 959
    Points
    959
    Par défaut
    Salut
    Oui c'est possible de stocker l'instance d'une classe en session
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    //Instanciation
    $_SESSION['newDossier'] =& new cNewDossier();
     
    //accès au méthode de la classe
    $dossierCourant = $_SESSION['newDossier']->getValeur();

  3. #3
    Membre averti Avatar de Seth77
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2005
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 448
    Points : 410
    Points
    410
    Par défaut
    Citation Envoyé par ozzmax
    Salut
    Oui c'est possible de stocker l'instance d'une classe en session
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    //Instanciation
    $_SESSION['newDossier'] =& new cNewDossier();
     
    //accès au méthode de la classe
    $dossierCourant = $_SESSION['newDossier']->getValeur();
    thx

    pk le & apres le = ??

  4. #4
    Membre averti Avatar de Seth77
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2005
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 448
    Points : 410
    Points
    410
    Par défaut
    Voila la reponse quand j essaie d acceder a une methode ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Fatal error: main() [function.main]: The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition "Membre" of the object you are trying to operate on was loaded _before_ unserialize() gets called or provide a __autoload() function to load the class definition in ??. on line 18

  5. #5
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 327
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 327
    Points : 15 670
    Points
    15 670
    Par défaut
    Citation Envoyé par Seth77
    pk le & apres le = ??
    c'est pour mettre une référence de l'objet et ne pas le copier

    pour ton erreur, c'est parce que tu dois définir ta classe avant le "session_start"

  6. #6
    Membre éprouvé
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Points : 959
    Points
    959
    Par défaut
    Salut le & c'est pour faire une référence a l'objet
    mais je crois que ca dépend de la version de php que tu utilises
    moi j'utilise ca en php 4

    Par contre ca passe pareil sans & mais comme l'objet n'était pas tout a fait au point dans la version 4 de php, si tu veux garder la référence a ton objet faut mettre le &..

    En php 5 ce serait ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $_SESSION["maclasse"] = new MaClasse();
    Pour l'erreur, si ta classe est dans un fichier appart
    fait le include avant le session_start();

  7. #7
    Membre averti Avatar de Seth77
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2005
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 448
    Points : 410
    Points
    410
    Par défaut
    Citation Envoyé par mathieu
    Citation Envoyé par Seth77
    pk le & apres le = ??
    c'est pour mettre une référence de l'objet et ne pas le copier

    pour ton erreur, c'est parce que tu dois définir ta classe avant le "session_start"
    je croyais que l on ne pouvais rien mettre avant un session_start ?

  8. #8
    Membre éprouvé
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Points : 959
    Points
    959
    Par défaut
    Tu peux mettres les includes
    mais il ne faut pas qu'il y ait d'instruction avant session start
    je ne savais pas pour la définition d'une classe, mais comme c'est une définition....ce n'est pas l'execution d'instruction alors ca me semble logique qu'on puisse le faire

  9. #9
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 327
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 327
    Points : 15 670
    Points
    15 670
    Par défaut
    Citation Envoyé par Seth77
    je croyais que l on ne pouvais rien mettre avant un session_start ?
    tu ne dois pas envoyer de code htm en sortie. par contre tu peux déclarer tes classes, faire des traitement, envoyer de requêtes à la base de données
    regarde là :
    http://php.developpez.com/faq/?page=...s_already_sent

  10. #10
    Membre averti Avatar de Seth77
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2005
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 448
    Points : 410
    Points
    410
    Par défaut
    Ah

    merci ....
    maintenant j ai une autre erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Fatal error: Access to undeclared static property: Membre::$Tab

  11. #11
    Membre éprouvé
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    Points : 1 164
    Points
    1 164
    Par défaut
    Citation Envoyé par Seth77
    je croyais que l on ne pouvais rien mettre avant un session_start ?


    Ce que tu ne peux pas faire c'est envoyer des données sur le navigateur.

    En effet pour utiliser les sessions PHP à besoin d'avoir la main sur les header, qui sont envoyé dès que l'on envoit la moindre donnée sur le navigateur.
    Des données sont envoyées sur le navigateur à partir du moment ou tu fais un echo (par exemple).

    Donc tu fais ce que tu veux avant le session_start, sauf envoyé des donnéessur le navigateur, sinon c'est le drame.

    :grilled:

  12. #12
    Membre éprouvé
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Points : 959
    Points
    959
    Par défaut
    t'as du code?
    le probleme est p-e dans ta classe?

  13. #13
    Membre averti Avatar de Seth77
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2005
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 448
    Points : 410
    Points
    410
    Par défaut
    Citation Envoyé par ozzmax
    t'as du code?
    le probleme est p-e dans ta classe?
    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
     
        class Membre extends DBElem{
        	var $IDMembre;    	
        	var $Tab;
     
            function __construct($Id){
                self::$IDMembre = $Id;
            	$sql = "SELECT * FROM membre WHERE ID_Membre='$Id'";
     
    			// Execution de la requete
    			$result = mysql_query($sql);
     
    			if (mysql_num_rows($result) > 0){            
    				$row = mysql_fetch_array($result);
     
    				self::$Tab = array("Pseudo" =>$row['Pseudo'],
    									"Administrateur" =>$row['Administrateur']);
    			}
            }  
     
            function getPseudo(){     
        		return self::$Tab['Pseudo'];    	
            }
        }
    c quand j appel getPseudo

  14. #14
    Membre éprouvé
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    Points : 1 164
    Points
    1 164
    Par défaut
    Utlises $this-> plutot que self::.

  15. #15
    Membre éprouvé
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Points : 959
    Points
    959
    Par défaut
    Citation Envoyé par ePoX
    utlise $this-> plutot que ::self.
    Ouais j'opterais pour ca

    Aussi comme tu définis une valeur à l'attribut $Tab dans un if, est ce que ca ce peut qu'il n'entre pas dans le if...donc n'a pas d'attribution de valeur?

  16. #16
    Membre averti Avatar de Seth77
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2005
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 448
    Points : 410
    Points
    410
    Par défaut
    merci ca marche

    c quoi la dif entre this et self ??

  17. #17
    Membre averti Avatar de Seth77
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2005
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 448
    Points : 410
    Points
    410
    Par défaut
    Citation Envoyé par ozzmax
    Citation Envoyé par ePoX
    utlise $this-> plutot que ::self.
    Ouais j'opterais pour ca

    Aussi comme tu définis une valeur à l'attribut $Tab dans un if, est ce que ca ce peut qu'il n'entre pas dans le if...donc n'a pas d'attribution de valeur?
    ben je pense que oui

  18. #18
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 327
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 327
    Points : 15 670
    Points
    15 670
    Par défaut
    Citation Envoyé par Seth77
    merci ca marche

    c quoi la dif entre this et self ??
    self:: c'est quand tu accède à une constante ou un attribut statique de la classe
    pour accéder à un attribut normal il faut une instance d'un objet et là cette instance c'est $this

  19. #19
    Membre éprouvé
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    Points : 1 164
    Points
    1 164
    Par défaut
    Citation Envoyé par Seth77
    merci ca marche

    c quoi la dif entre this et self ??
    $this cible une instance de classe, alors self cible la structure de la classe.

    Je n'irai pas plus loin dans les explications je n'en suis pas capable, comme le disais ma maitresse si tu ne sais pas l'expliquer c'est que tu ne le connais pas... ou un truc du genre

    Faudrait voir du coter du forum sur http://www.developpez.net/forums/viewforum.php?f=32 pour une définition plus précise et théorique de l'attribut static.

  20. #20
    Membre averti Avatar de Seth77
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2005
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 448
    Points : 410
    Points
    410
    Par défaut
    Merci a TLM !!

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

Discussions similaires

  1. Eval d'une propriété d'une classe dans une classe
    Par bizet dans le forum ASP.NET
    Réponses: 4
    Dernier message: 28/10/2008, 09h43
  2. Réponses: 3
    Dernier message: 29/04/2008, 14h14
  3. [POO] dans une classe, appeler une fonction dans une méthode
    Par arnaudperfect dans le forum Langage
    Réponses: 3
    Dernier message: 26/08/2007, 23h04
  4. [POO] Une Classe dans une Classe. C'est possible?
    Par FrankOVD dans le forum Langage
    Réponses: 2
    Dernier message: 18/05/2006, 22h02
  5. [POO] Utilisation d'une classe dans une classe !
    Par Okinou dans le forum Langage
    Réponses: 3
    Dernier message: 16/02/2006, 14h34

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