Autor Zpráva
Spectator
Profil
Dobrý den,
zajímá mne, zda se používá nebo je vůbec vhodné uložit objekt jako celek do session?

$objekt = new Objekt();
$_SESSION['objekt'] = $objekt;  
echo $_SESSION['objekt']->hodnota_1();
echo $_SESSION['objekt']->hodnota_2();
ShiraNai7
Profil
Je to možné a používá se to, ale pokud to můžeš udělat jinak, tak to tak udělej. Ukládat do session objekt, který má stejnou informační hodnotu jako obyčejné pole, je nesmysl.
Spectator
Profil
ShiraNai7:
Děkuji za odpověď.


EDIT:
Nechci nic takového dělat, ale tím se v podstatě dá obejít bezstavovost PHP tak, že bych si celou aplikaci uložit právě do session jako jeden objekt?
ShiraNai7
Profil
Spectator:
Celou aplikaci? Teoreticky ano, ale prakticky by to bylo extrémně neefektivní, pokud není aplikace vyloženě minimalistická.
Spectator
Profil
Jak by to zneefektivňovalo? Když objekt vytvořím, zabere místo v paměti, když ho uložím do jiného místa v paměti (třeba session) zůstane množství zdrojů nezměněné, když samozřejmě původní objekt odstraním (původní proměnnou obsahující obj.).
Pak si umím představit, že tedy uživatelovo sezení žere paměť během celé doby co session existuje, což může být důvod té neefektivnosti, ale jinak?
ShiraNai7
Profil
Spectator:
Po skončení skriptu se session serializuje a ukládá do souboru. Pokud obsahuje objekt tvé aplikace další závislosti na komponenty (které můžou dále obsahovat další závislosti) tak se musí serializovat taky. Navíc komponenty můžou obsahovat hodnoty, které serializovat nejdou (resource, nějaké instance interních tříd) a byly by z toho akorát problémy. Tohle není správná cesta. Session by měla obsahovat pouze ty stavy, které aplikace potřebuje pro svou funkčnost. Navíc implementace session může být různá (nejen nativní PHP sessions).
Spectator
Profil
Jsem spokojen s vysvětlením, děkuji.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: