Kod
<?php
class MyObj {
public $property = 1;
}
session_start();
// inicjalizacja
$obj = new MyObj;
$variable = 'a';
// zapis do sesji
$_SESSION['obj'] = $obj;
$_SESSION['var'] = $variable;
// zmiana wartosci
$obj->property = 2;
$variable = 'b';
// odczyt z sesji
$o = $_SESSION['obj'];
$v = $_SESSION['var'];
// wyjscie
echo 'wlasciwosc obiektu: '. $o->property;
echo '<br>';
echo 'zmienna: '.$v;
class MyObj {
public $property = 1;
}
session_start();
// inicjalizacja
$obj = new MyObj;
$variable = 'a';
// zapis do sesji
$_SESSION['obj'] = $obj;
$_SESSION['var'] = $variable;
// zmiana wartosci
$obj->property = 2;
$variable = 'b';
// odczyt z sesji
$o = $_SESSION['obj'];
$v = $_SESSION['var'];
// wyjscie
echo 'wlasciwosc obiektu: '. $o->property;
echo '<br>';
echo 'zmienna: '.$v;
a na wyjściu programu:
wlasciwosc obiektu: 2
zmienna: a
Można zaobserwować, że zwykła zmienna oraz obiekt zachowują się przy zapisie do sesji nieco inaczej.
Pytania:
1) Dlaczego nie wyświetliło się wlasciwosc obiektu: 1?
2) Czy zapis obiektu w sesji polega na zapisie w niej referencji do obiektu?
3) Czy w związku z tym można zapisać obiekt w sesji na samym początku skryptu, a potem dowolnie go zmieniać bo i tak wszystkie zmiany zostaną odnotowane w sesji?