![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 27 Pomógł: 0 Dołączył: 19.02.2005 Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Na początku wypada się przyznać, że pierwszy raz próbuję przechować obiekt w sesji - jest to konkretnie obiekt QuickForm. Na początku dostawałem worning o session_start. Więc teraz mam już najpierw :
a dopiero później:
Próbowałem już rozmaitych kombinacji i aktualnie sprawa wygląda tak - mam formularz tworzony quickformem i smarty. Nie wiem czy to potrzebne, ale obiekt tworzony jest od razu w sesji:
Pod tym formularzem wyświetlam sesję i jej zawartość jest poprawna. Dla uproszczenia plik test 2 zawiera już tylko:
I tutaj niestety zarówno bezpośrednio jak po zdeserializowaniu widzę zawsze: [__PHP_Incomplete_Class_Name] => html_quickform_text [0] => __PHP_Incomplete_Class Object itd.. Bardzo proszę o jeszcze jakieś sugestie bo już zupełnie zabrakło mi pomysłów. Pozdrawiam, yacoos |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 793 Pomógł: 32 Dołączył: 23.11.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Najpierw cytacik z manuala:
Cytat Thus, you need to call session_name() for every request (and before session_start() or session_register() are called). A co do problemu to obiekt zapisywany do sesji jest automatycznie serializowany, przez wywołanie metod __sleep() tegoż obiektu, jeśli nie ma zdefiniowanej to wywoływana jest domyślna metoda. Jeśli autorzy klasy HTML_QuickForm nie przewidzieli możliwości serializacji (a też nie zablokowali, co się często zapomnieć zdarza) to rezultat może być różny. A do tego nie:
a
-------------------- Algorytmy w PHP, czy ktoś o tym słyszał?
Dlaczego tak mało kobiet programuje? ponieważ nie zajmują się głupotami. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 27 Pomógł: 0 Dołączył: 19.02.2005 Ostrzeżenie: (0%) ![]() ![]() |
Witam i dziękuję za odpowiedź.
Co do cytaciku z manuala - zaminiłem.. Ale niestety dalej mam:
Zatem co jeżeli QuickForm nie przewidzial sleep i wakeup ? Są jeszcze jakieś inne opcje? Pozdrawiam. |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 237 Pomógł: 1 Dołączył: 8.02.2007 Ostrzeżenie: (10%) ![]() ![]() |
Nie za bardzo rozumiem co Ty chcesz zrobić.
W tytule jest jak przechowywać obiekt w sesji. No to na mój rozum to serializujesz i przypisujesz do zmiennej O.o Czyli, np. tak: Kod $_SESSION['obiekt'] = serialize($obiekt); Może Ci się nie serializuje przy przypisaniu do sesji, też miałem kiedyś z tym problem... Spróbuj serializować ![]() -------------------- Jabber/E-Mail: dominiksokal[at]gmail.com | GG: #3795571
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 27 Pomógł: 0 Dołączył: 19.02.2005 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Czy srializuje, czy nie serializuje.. przy odczycie mam już __PHP_Incomplete_Class Object zamiast poprawnego obiektu. Chcę zapisać obiekt klasy QuickForm w jednym miejscu i odczytać go w innym.. Pozdrawiam, |
|
|
![]()
Post
#6
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
Przed unserialize() PHP musi wiedzieć o tym obiekcie wszystko, to znaczy, że musi mieć definicję jego klasy.
Zanim odserializujesz tego stringa zaincluduj plik z klasą tego obiektu. |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 793 Pomógł: 32 Dołączył: 23.11.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
@mike jeśli dobrze patrzę to include'uje odpowiednie pliki.
Kłopot może być taki jak wspomniałem, nie uwzględnienie serializacji. np. właściwości prywatne nie ulegają serializacji automatycznej, zasoby pewnie parę innych rzeczy, więc jeśli coś się znajdzie w tych nie zapisanych w sesji danych to mamy niepełny obiekt. Ale właśnie czytam dokumentacje i chyba jednak może też być problem z brakiem dostępności definicji klasy. Polecam do lekturki: unserialize" title="Zobacz w manualu PHP" target="_manual -------------------- Algorytmy w PHP, czy ktoś o tym słyszał?
Dlaczego tak mało kobiet programuje? ponieważ nie zajmują się głupotami. |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 27 Pomógł: 0 Dołączył: 19.02.2005 Ostrzeżenie: (0%) ![]() ![]() |
Witam ponownie..
Sam problem rozwiązałem już inaczej.. Niemniej jednak dalej męczą mnie te obiekty w sesji.. Doszedłem wczoraj do tego że jeżeli tylko stworzyłem obiekt QuickForm - to po zapisaniu do sesji i odtworzeniu wszystko było OK. Jeżeli jednak skorzystałem z jakiejś metody np. addElement - wtedy odtwarzany obiekt był niekompletny. Może to na coś Was naprowadzi ![]() Pozdrawiam. |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 216 Pomógł: 0 Dołączył: 9.08.2003 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Hm, to może w obiekcie QuickForm istnieją inne obiekty np: Jakieś obiekty określające typy pól (Nie wiem, nie znam quickform, strzelam) I może one też muszą być wcześniej zaincludowane?
|
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 793 Pomógł: 32 Dołączył: 23.11.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Ace raczej zakładam że include'ują tak samo więc jak normalnie starcza do utworzenia obiekru to przy odserializowaniu też.
Kłopot jest raczej ten co mówię, i co potwierdza wypowiedź yacoos'na. Mianowicie autorzy klasy ( a ma zapewne dane prywatne/chronione) nie zapewnili obsługi serializacji, a standardowa sobie nie radzi (a jak to chyba często bywa nie jest blokowana serializacja, a powinna jak się jej nie przewiduje). -------------------- Algorytmy w PHP, czy ktoś o tym słyszał?
Dlaczego tak mało kobiet programuje? ponieważ nie zajmują się głupotami. |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 23.06.2025 - 19:33 |