J'essaie de stocker un objet dans la session Joomla et il est réinitialisé lorsque j'annule la variable temporaire.
$whoami = new stdClass();
$whoami->type = 's'; $whoami->id = '1';
//Loading the value to session
$session->set('whoami',$whoami);
//Getting the session value to a temp variable
$temp = $session->get('whoami');
print_r($temp); //This prints correct as [type] => s [id] => 1
var_dump($temp);
//Set the temp id to null
$temp->id = null;
//Again get the value from session
$test1 = $session->get('whoami');
print_r($test1); // [type] => s [id] =>
var_dump($test1);
var_dump
de $temp
et $test1
est comme ci-dessous
$ temp
object(stdClass)#193 (2) {
["type"]=>
string(1) "s"
["id"]=>
string(1) "1"
}
$ test1
object(stdClass)#193 (2) {
["type"]=>
string(1) "s"
["id"]=>
NULL
}
L'affectation de la valeur null à l'id temporaire réinitialise la valeur dans la variable de session ... a l'air bizarre ...
Puis-je avoir une aide s'il vous plait.
C'est simple, votre var $ temp est une référence de l'objet session. Donc, si vous modifiez le contenu de l'objet, vous modifiez l'objet de session lui-même.
Vous devez cloner l'objet:
$temp = clone $session->get('whoami');
ou vous créez un nouvel objet:
$temp = new stdClass();
$temp->type = $session->get('whoami')->type;
$temp->id = $session->get('whoami')->id;
Votre var dump devrait ressembler à ceci maintenant:
stdClass Object
(
[type] => s
[id] => 1
)
object(stdClass)#42 (2) {
["type"]=>
string(1) "s"
["id"]=>
string(1) "1"
}
1stdClass Object
(
[type] => s
[id] => 1
)
object(stdClass)#812 (2) {
["type"]=>
string(1) "s"
["id"]=>
string(1) "1"
}
Informations complémentaires: