![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 138 Pomógł: 3 Dołączył: 21.11.2005 Ostrzeżenie: (0%) ![]() ![]() |
Czy można przechowywać obiekty w zmiennych sesyjnych? jezeli tak to jak?
-------------------- "Istotne problemy naszego życia nie mogą być rozwiązane na tym samym poziomie myślenia, na jakim byliśmy kiedy je tworzyliśmy". A.Einstein
|
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. ![]() |
serialize" title="Zobacz w manualu PHP" target="_manual i zapisujesz do zmiennej sesyjnej.
Pamiętaj jednak, że nie możesz serializować obiektów wbudowanych w php Pozdrawiam. -------------------- To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness; chaotic, confused, vulnerability, to inform yourself. Think for yourself. Question authority. |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 1 116 Pomógł: 119 Dołączył: 10.05.2005 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
dodam, że istnieją jeszcze funkcje magiczne: __sleep() i __wakeup() być może Ci się przydadzą.
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Przyjaciele php.pl Postów: 698 Pomógł: 3 Dołączył: 28.03.2004 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Poza tym, trzeba uważać, żeby do sesji nie trafił obiekt, który może się "zestarzeć". Jeżeli jesteś pewny, że możesz te dane przechować w sesji, to nie ma problemu.
-------------------- |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 25 Pomógł: 0 Dołączył: 16.03.2007 Ostrzeżenie: (0%) ![]() ![]() |
No i oczywiście, jeśli obiekt przechowuje w swoich zmiennych inne obiekty, to je również wypadałoby serializować. A do tego wyżej wspomniane __sleep() i __wakeup().
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
I przy wyciaganiu obiektow z sesji (przed session start) zaladuj definicje klas tych obiektow
-------------------- Nie lubię jednorożców.
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 206 Pomógł: 18 Dołączył: 6.03.2006 Skąd: Szczecin Ostrzeżenie: (0%) ![]() ![]() |
upewnij sie tez, ze nie masz wlaczonego "session.auto_start" w php.ini. inaczej, sesja bedzie rozpoczynana automatycznie na starcie PHP, a wiec zanim zdazysz zdefiniowac klasy obiektow, ktore w tej sesji przechowujesz (co oczywiscie spowoduje blad).
innymi slowy, podsumowujac wszelkie obawy i wszystkie ewentualnosci, ktore trzeba brac pod uwage bawiac sie w obiekty w sesjach, sadze, ze jezeli nie piszesz czegos wybitnie zorientowanego obiektowo, lepiej jest przechowywac tylko wartosci pol poszczegolnych skladowych w sesji i potem odtwarzac obiekt (oczywiscie nie zawsze, ale jest to znacznie pewniejsze, wiec dopuki nie trzeba, to imho nie ma co sie pchac). Ten post edytował wrzasq 23.08.2007, 01:07:31 -------------------- Wrzasq.pl
Tworzenie stron i aplikacji internetowych. Chillout Development - tworzenie stron i aplikacji internetowych. |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 793 Pomógł: 32 Dołączył: 23.11.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
serialize" title="Zobacz w manualu PHP" target="_manual i zapisujesz do zmiennej sesyjnej. Po przypisaniu do sesji obiektu przy zapisie sesji jest automatycznie wywoływana serializacja, tylko przy własnym handlerze trzeba wymusić pierszeństwo jego wykonania, inaczej obiekty zostaną zniszczone przed zapisaniem sesji. Cytat Pamiętaj jednak, że nie możesz serializować obiektów wbudowanych w php Wbudowanych, to znaczy jakich? Nie mozna wszystkiego rodzaju "uchwytów" czyli np. połączenia do bazy danych itd. czyli szczególnie typu resource.... ale to jak widzę jest napisane w podanym przez Cysiaczek linku. Ogólnie jeśli zaimplementujesz __sleep() i __wakeup() i obiekt będzie dostępny w czasie odtwarzania sesji to nie będzie problemów. A te dwie metody mogą po prostu do sesji zapisywać (i odczytywać) tylko parę wartości, więc jednak chyba lepiej wykorzystywać je, niż na sztywno wykorzystywać mechanizm sesji. -------------------- Algorytmy w PHP, czy ktoś o tym słyszał?
Dlaczego tak mało kobiet programuje? ponieważ nie zajmują się głupotami. |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 118 Pomógł: 3 Dołączył: 6.07.2006 Skąd: Dublin Ostrzeżenie: (0%) ![]() ![]() |
dodam, że istnieją jeszcze funkcje magiczne: __sleep() i __wakeup() być może Ci się przydadzą. Cytat No i oczywiście, jeśli obiekt przechowuje w swoich zmiennych inne obiekty, to je również wypadałoby serializować. A do tego wyżej wspomniane __sleep() i __wakeup(). Zdeprecjonowane na rzecz interfejsu Serializable: Serializable Interface Reference Improved object serialization with the Serializable interface -------------------- -----------------------
My hovercraft is full of eels! |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 07:59 |