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 :

Session vers objet


Sujet :

Langage PHP

  1. #1
    Membre expérimenté Avatar de riete
    Homme Profil pro
    DevWeb - Oléiculteur
    Inscrit en
    Avril 2006
    Messages
    1 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : DevWeb - Oléiculteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 193
    Points : 1 414
    Points
    1 414
    Par défaut Session vers objet
    Je voudrais tout simplement transférer une variable session vers un objet.

    Pour passe de l'objet vers la session, pas de problème.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_SESSION['Ma_Session'] = $this;
    Il y a bien la solution un peu brutale du style:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    foreach ($_SESSION['Ma_Session'] as $key => $value) {
    	$this->$key = $value;
    }
    Mais j'aurais préféré quelque chose du style, mais je reçois le message Fatal error: Cannot re-assign $this

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $this = $_SESSION['Ma_Session'];
    J'image que je ne suis pas le seul à avoir ce problème, mais je ne trouve aucune litérature à ce sujet.
    Merci d'avance.

    Thierry

  2. #2
    Membre averti Avatar de nicocsgamer
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    321
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 321
    Points : 342
    Points
    342
    Par défaut
    Ca peut etre.

  3. #3
    Membre expérimenté Avatar de riete
    Homme Profil pro
    DevWeb - Oléiculteur
    Inscrit en
    Avril 2006
    Messages
    1 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : DevWeb - Oléiculteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 193
    Points : 1 414
    Points
    1 414
    Par défaut
    merci Nicocsgamer

    Je n'ai pas encore testé l'histoire car le lien que tu me propose me laisse un peu perplexe. Il faut que je me réhabitue à l'utilisation des références donc ?

    Je vais tester et je te tiens au jus.

  4. #4
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    j'ai une question surement très bete mais tu as surement une méthode de ta classe qui permet de récupérer l'instance de l'objet depuis la session non (vu que tu utilises $this tu dois etre dans la classe) ?

    pourquoi tu fais pas simplement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $monObjet = $_SESSION['ma_session'];

  5. #5
    Membre expérimenté Avatar de riete
    Homme Profil pro
    DevWeb - Oléiculteur
    Inscrit en
    Avril 2006
    Messages
    1 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : DevWeb - Oléiculteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 193
    Points : 1 414
    Points
    1 414
    Par défaut
    Oui absoluement, je suis dans la classe.
    Bon je vais essayé d'être un peu plus clair.

    La Class suivie du code (cette version est une version résumée pour simplifier la lecture):
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    Class Mail{
    	var $To;
    	var	$From;
    	var	$Subject;
    	var	$Header;
    	var	$Message;
     
    	//--------------------
    	// Transfert de l'objet vers la Session
    	//--------------------
    	function MailToSession(){
     
    			$_SESSION['Mail_Session'] = $this;
     
    	}
     
    	//--------------------
    	// Transfert de l'objet vers la Session
    	//--------------------
    	function SessionToMail(){
     
    			$this = $_SESSION['Mail_Session'];
     
    	}
    *
    	//--------------------
    	// Creation du Message
    	//--------------------
    	function Creat_Mail($To, $Subject, $Message, $Header){
    		$this->To = $To;
    		$this->From = $Header[0];
    		$this->Subject = $Subject;
    		$this->Message = $Message;
    		$this->Header = "From: $Header[0]\r\nReply-To: $Header[0]\r\n";
     
    		// S'il y a demande de CC on la cree
    		if ($Header[1] != ""){$this->Header .= "Cc: $Header[1]\r\n";};
     
    		return $this;
    	}
    }
    *
    $new_Mail = new Mail();
    *
    // Considerons que les variables passées sont affectées
    $new_Mail = $new_Mail->Creat_Mail($to, $UTF8_Subject, $body1,$Header);
    *
    // Passage du message a la Session
    $new_Mail->MailToSession();
    Une fois l'objet dans la session, ce qui fonctionne bien, je voudrais simplement rebasculer depuis un autre script php l'objet de la session vers une objet instancié de la Class Mail.
    Voilà ce que je pensais pouvoir faire, mais peut être que je me trompe.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $new_Mail = $new_Mail->SessionToMail();

  6. #6
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    et donc pourquoi ne pas faire juste:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $new_Mail = $_SESSION['Mail_Session'];
    ?

    Parce qu'a l'arrivée c'est ce que tu ferais si
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this = $_SESSION['Mail_Session'];
    fonctionnait

    EDIT:

    Et si le but c'est de faire appel à une fonction propre (comme ca si Mail_Session change de nom tu ne changes pas le code) tu peux faire une méthode de la classe comme ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function SessionToMail(){
    return $_SESSION['Mail_Session'];
    }
    et de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $new_Mail = $new_Mail->SessionToMail();
    EDIT2:
    Parce que pour l'instant tu as une fonction qui affecte à $this une nouvelle valeur, et ensuite tu remets dans ton instance, le retour de la fonction SessionToMail() qui ne retourne rien.
    Peut etre que ta seule erreur est de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $new_Mail = $new_Mail->SessionToMail();
    au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $new_Mail->SessionToMail();

  7. #7
    Membre expérimenté Avatar de riete
    Homme Profil pro
    DevWeb - Oléiculteur
    Inscrit en
    Avril 2006
    Messages
    1 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : DevWeb - Oléiculteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 193
    Points : 1 414
    Points
    1 414
    Par défaut
    Bon, alors, vu que tu t'es donné beaucoup de peine pour me répondre Koopajah, je vais te donner le résultat complet de mes tests

    D'abord, tu as entièrement raison sur la plupart des points sauf un seul.

    Les codes qui fonctionnent:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $new_Mail = $_SESSION['Mail_Session'];
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    // C'est cette méthide que j'ai choisit car elle est plus 'portable'
    $new_Mail = $new_Mail->SessionToMail();
     
    // Avec dans la Class Mail
    	function SessionToMail(){
     
    			return $_SESSION['Mail_Session'];
    	}
    Par contre si je fais la chose suivante l'objet en retour est vide !!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $new_Mail->SessionToMail();
    Ce qui me parait logique puisque la valeur de retour n'est affectée à rien.

    Bon sinon Merci pour le coup de pouce, car ca fait pas mal de centaine de ligne de code que je me paluche avec une sale boucle foreach pour transférer ma SESSION vers mes objet. Quel naze, parfois les solutions simple nous crève les yeux et on ne les vois pas.



    Thierry

  8. #8
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    Citation Envoyé par riete
    Par contre si je fais la chose suivante l'objet en retour est vide !!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $new_Mail->SessionToMail();
    Ce code va avec ton ancienne fonction SessionToMail(), celle qui faisait $this = ...;

  9. #9
    Membre expérimenté Avatar de riete
    Homme Profil pro
    DevWeb - Oléiculteur
    Inscrit en
    Avril 2006
    Messages
    1 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : DevWeb - Oléiculteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 193
    Points : 1 414
    Points
    1 414
    Par défaut
    Grand merci encore. Tous gaz bien

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

Discussions similaires

  1. Session en objet
    Par NiHiL dans le forum Contribuez / Téléchargez Sources et Outils
    Réponses: 4
    Dernier message: 12/11/2006, 19h27
  2. [POO] Sessions et objets
    Par fredo31 dans le forum Langage
    Réponses: 10
    Dernier message: 19/07/2006, 15h56
  3. [Sessions] Session + Serialize + Objets?
    Par Chiwawa dans le forum Langage
    Réponses: 2
    Dernier message: 28/09/2005, 20h32
  4. [Strategie]un paramètre d'une session vers la couche donnée
    Par milouze dans le forum Développement Web en Java
    Réponses: 9
    Dernier message: 05/07/2005, 14h22
  5. Socket (SMTP) vers objet MimeMessage : conversion ?
    Par Loicb dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 06/12/2004, 18h21

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