Autor | Zpráva | ||
---|---|---|---|
Spectator Profil |
#1 · Zasláno: 10. 8. 2012, 13:51:24
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 |
#2 · Zasláno: 10. 8. 2012, 13:55:46
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 |
#4 · Zasláno: 10. 8. 2012, 14:10:11
Spectator:
Celou aplikaci? Teoreticky ano, ale prakticky by to bylo extrémně neefektivní, pokud není aplikace vyloženě minimalistická. |
||
Spectator Profil |
#5 · Zasláno: 10. 8. 2012, 14:28:31
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 |
#7 · Zasláno: 10. 8. 2012, 14:46:20
Jsem spokojen s vysvětlením, děkuji.
|
||
Časová prodleva: 12 let
|
0