![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 25 Pomógł: 0 Dołączył: 31.05.2005 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Mam problem z serializacją obiektu posiadającego inne obiekty. Może przykład coś wyjaśni:
Efekt serializacji poszczególnych pól tablicy map jest prawidłowy ale w przypadku serializacji obiektu map :
Serializacji usilnie ładuje do sesji wszystko z obiektu łącznie atrybutem map, który już wcześniej sobie do sesji zapisałem i w __wakeup pobrałem z powrotem. Jak zrobić aby serializując obiekt zapisać sobie proste zmienne a pozostałe serializować ręcznie. A może jest jakiś inny lepszy sposób radzenia sobie z obiektami zawierającymi inne obiekty? ps. poprawiłem (IMG:style_emoticons/default/smile.gif) pisałem z ręki gdyż klasa zainteresowana serializacją ma już ponad 1000 linii i nie widziałem sensu jej tu całej pchać. Jest to wycinek tej klasy generujący moją frustrację oraz błąd. Ten post edytował vegelus 24.03.2010, 14:34:13 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 580 Pomógł: 85 Dołączył: 25.03.2010 Skąd: Skrzyszów :) Ostrzeżenie: (0%) ![]() ![]() |
1. if (!isset($_SESSION['map'])) { 2. $map = new map(4, 4); 3. $_SESSION['map'] = serialize($map); 4. } else { 5. $map = unserialize($_SESSION['map']); 6. } Takiego mixu to ja już dawno nie widziałem (IMG:style_emoticons/default/smile.gif) Tworzysz obiekt a potem odrazu go serializujesz, nie wykonując na nim żadnych operacji (IMG:style_emoticons/default/smile.gif) To może ci się wydawać dobre i działać, ale świadczy tylko o złym zaprojektowaniu klasy. Zastanów się czy tych 1000 lini kodu nie da się rozłożyć do kilku klas, bo takie giganty strasznie zalatują "god's class", a z tąd już tylko krok do programowania strukturalnego. Edit: A poza tym staraj się utrzymywać jakąć stałą konwencję co do nazewnictwa, a nie mieszaj polskiego z angielskim, albo rybki albo akwarium (IMG:style_emoticons/default/smile.gif) A teraz będzie troche na temat (IMG:style_emoticons/default/smile.gif) A że poźno jest, a ja zmęczony to będzie to metoda brutal force (IMG:style_emoticons/default/smile.gif) Po serializacji map chamsko wyczyść to pole unset'em, to dane nie będą się dublować, zakładająć oczywiście że nie masz jakoś dziwnie zaimplementowanych destruktorów w fildzie A teraz dobranoc, koniec imprezy (IMG:style_emoticons/default/smile.gif) Ide spać Ten post edytował zend 25.03.2010, 23:26:36 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 7.10.2025 - 08:03 |