Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Serializacja obiektu i zapis do pliku
Forum PHP.pl > Forum > PHP
NoiseMc
Witam

Serializuję obiekt i zapisuję go do pliku:

  1. <?php
  2. $strFileData = chunk_split ( base64_encode ( serialize ( $objData ) ) );
  3. ?>


Wczytuję plik odserializowuję:

  1. <?php
  2.  
  3. $objImportData = str_replace ( "rn", '', $strFileData );
  4. $objImportData = base64_decode ( $objImportData );
  5. $objImportData = unserialize ( $objImportData );
  6.  
  7. ?>


i dostaję coś takiego:

Kod
__PHP_Incomplete_Class Object ( [__PHP_Incomplete_Class_Name] => exportdata [arrData] => Array ..... i tutaj KOMPLETNĄ tablicę z danymi które wcześniej zserializowałem


Bez zapisywania do pliku jak zserializuję obiekt, zakoduję i potnę chunk_split () do zmiennej. Potem odserializuję tą zmienną i wyświetlę print_r () dostaję:

Kod
exportdata Object ( [arrData] => Array ... czyli wszystko OK


O co chodzi czemu gubię część obiektu podczas zapiu do pliku najlepsze jest, że jeżeli wyprintuję zawartość zmiennej $strFileData przed zapisem i porównam to co dostałem z zawartością pliku poprzez strcmp () to obie zmienne są równe.

Edit:
Nie wiem czy ma to znaczenie ale do zapisu pliku używam PEAR:HTTP_Download, do uploadu PEAR:HTTP_Upload, do odczytu pliku PEAR:File
mike
W chwili odeserializowania obiektu jego konstrukcja musi być znana. Tzn php musi wiedzieć jak ona.
Tu masz odpowedź: http://forum.php.pl/index.php?showtopic=20379
NoiseMc
Dzięki za odpowiedź. W międzyczasie doszedłem już, że zarówno w pliku w którym serializuję dane jak i w pliku w którym deserializuję muszę "widzieć" (czyt. zaincludować) deklarację klasy obiektu serializowanego.
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.