Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/07/2007, 11h25   #1
Membre Expert
 
Avatar de riete
 
Homme Thierry
NFC & DevWeb
Inscription : avril 2006
Messages : 1 175
Détails du profil
Informations personnelles :
Nom : Homme Thierry
Âge : 51
Localisation : France

Informations professionnelles :
Activité : NFC & DevWeb
Secteur : Bâtiment

Informations forums :
Inscription : avril 2006
Messages : 1 175
Points : 1 366
Points : 1 366
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 :
$_SESSION['Ma_Session'] = $this;
Il y a bien la solution un peu brutale du style:
Code :
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 :
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
riete est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/07/2007, 11h29   #2
Membre éclairé
 
Avatar de nicocsgamer
 
Inscription : mars 2005
Messages : 324
Détails du profil
Informations personnelles :
Âge : 27
Localisation : Luxembourg

Informations forums :
Inscription : mars 2005
Messages : 324
Points : 365
Points : 365
Envoyer un message via MSN à nicocsgamer
Ca peut etre.
nicocsgamer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/07/2007, 12h08   #3
Membre Expert
 
Avatar de riete
 
Homme Thierry
NFC & DevWeb
Inscription : avril 2006
Messages : 1 175
Détails du profil
Informations personnelles :
Nom : Homme Thierry
Âge : 51
Localisation : France

Informations professionnelles :
Activité : NFC & DevWeb
Secteur : Bâtiment

Informations forums :
Inscription : avril 2006
Messages : 1 175
Points : 1 366
Points : 1 366
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.
riete est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/07/2007, 12h13   #4
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
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 :
$monObjet = $_SESSION['ma_session'];
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/07/2007, 15h29   #5
Membre Expert
 
Avatar de riete
 
Homme Thierry
NFC & DevWeb
Inscription : avril 2006
Messages : 1 175
Détails du profil
Informations personnelles :
Nom : Homme Thierry
Âge : 51
Localisation : France

Informations professionnelles :
Activité : NFC & DevWeb
Secteur : Bâtiment

Informations forums :
Inscription : avril 2006
Messages : 1 175
Points : 1 366
Points : 1 366
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 :
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 :
$new_Mail = $new_Mail->SessionToMail();
riete est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/07/2007, 15h33   #6
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
et donc pourquoi ne pas faire juste:

Code :
$new_Mail = $_SESSION['Mail_Session'];
?

Parce qu'a l'arrivée c'est ce que tu ferais si
Code :
$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 :
1
2
3
function SessionToMail(){
return $_SESSION['Mail_Session'];
}
et de faire
Code :
$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 :
$new_Mail = $new_Mail->SessionToMail();
au lieu de
Code :
$new_Mail->SessionToMail();
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/07/2007, 16h07   #7
Membre Expert
 
Avatar de riete
 
Homme Thierry
NFC & DevWeb
Inscription : avril 2006
Messages : 1 175
Détails du profil
Informations personnelles :
Nom : Homme Thierry
Âge : 51
Localisation : France

Informations professionnelles :
Activité : NFC & DevWeb
Secteur : Bâtiment

Informations forums :
Inscription : avril 2006
Messages : 1 175
Points : 1 366
Points : 1 366
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 :
$new_Mail = $_SESSION['Mail_Session'];
Code :
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 :
$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
riete est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/07/2007, 16h08   #8
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
Citation:
Envoyé par riete
Par contre si je fais la chose suivante l'objet en retour est vide !!
Code :
$new_Mail->SessionToMail();
Ce code va avec ton ancienne fonction SessionToMail(), celle qui faisait $this = ...;
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/07/2007, 16h49   #9
Membre Expert
 
Avatar de riete
 
Homme Thierry
NFC & DevWeb
Inscription : avril 2006
Messages : 1 175
Détails du profil
Informations personnelles :
Nom : Homme Thierry
Âge : 51
Localisation : France

Informations professionnelles :
Activité : NFC & DevWeb
Secteur : Bâtiment

Informations forums :
Inscription : avril 2006
Messages : 1 175
Points : 1 366
Points : 1 366
Grand merci encore. Tous gaz bien
riete est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h02.


 
 
 
 
Partenaires

Hébergement Web