Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: przekazywanie obiektu w sesji
Forum PHP.pl > Forum > PHP
a79rtur
witam
mam klase Uzytkownik w niej sa rozne metody do obslugi danych uzytkownika oraz do pobierania ich. w konstruktorze poprostu ladowane sa z bazy za pomoca PDO dane uzytkownika. czy mozna jakos to zrobic, zeby przy kazdym przeladowaniu strony nie tworzyc nowego obiektu tylko go przekazywac jakos za pomoca sesji? wiem ze uzywa sie do tego serialize/unserialize , a moze z Singletonem cos pokombinowac ?
chcialbym np zmieniac dane uzytkownika w obiekcie $uz, pozniej wywolac metode np. $uz->ZapiszDane() i tyle.
konys
Cytat
chcialbym np zmieniac dane uzytkownika w obiekcie $uz, pozniej wywolac metode np. $uz->ZapiszDane()
- to możesz uzyskać serializując -> przekazując zmienną w sesji -> odserializując (dziwne słowo) obiekt. Nie jestem specem od wzorców projektowych, ale wydaje mi się, że singleton zapobiega tworzeniu dwóch instancji danego obiektu w jednym skrypcie. Po zamknięciu tego skryptu dane są usuwane, więc po wywołaniu następnego skryptu ponownie zostanie utworzony singleton - jeśli się mylę proszę o sprostowanie. Ja w każdym razie używam serializacji i nie narzekam.
a79rtur
a jak myslicie czy oplaca sie to serializowac i przekazywac czy lepiej przy kazdym przeladowaniu tworzyc od nowa obiekt w oparciu i id uzytkownika ktore by bylo w sesji ? w obiekcie tym sa dane uzytkownika pobrane z bazy i pare metod do wyswietlania/operacji na nim. i kiedy i gdzie to najlepiej serializowac zeby bylo wiadomo ze sie dane zachowaja zawsze.

ja zrobilem tak ze przy logowaniu jest :
Kod
$user=new Uzytkownik($_SESSION['user_id']);
$_SESSION['User']=serialize($user);


zawsze na poczatku strony po zaladowaniu konfigu, stałych, klas etc jest:
Kod
if(isset($_SESSION['User'])) $user=unserialize($_SESSION['User']);


a w destruktorze klasy jest:
Kod
function __destruct() {
      $_SESSION['User']=serialize($this);
}


co myslicie o takim rozwiazaniu ?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.