I. Na początek
II.Instalacja i konfiguracja
III. Opis języka
IV. Bezpieczeństwo
V. Możliwości
VI. Opis funkcji
VII. Zend API
VIII. PHP API: Interfejs rozszerzeń
X. Dodatki

Manual PHP

Zapraszam do korzystania z zamieszczonego przeze mnie manuala php. Mam nadzieję, że ta jego kopia przyda się zarówno profesjonalnym programistą, jak i początkującym twórcą skryptów PHP.

Autorzy

Mehdi Achour,
Friedhelm Betz,
Antony Dovgal,
Nuno Lopes,
Philip Olson,
Georg Richter,
Damien Seguy,
Jakub Vrana,
I kilka innych

Redakcja:

Gabor Hojtsy,
Marcin Dąbrowski, Michał Grzechowiak, Leszek Krupiński, Adam Major, Paweł Paprota, Michał Pena, Sławomir Pucia, Jarek Tabor, Tomasz Wójtowicz,

Serializacja obiektów - obiekty w sesjach

Notatka: W PHP 3 obiekty tracą powiązania między klasami w czasie procesu serializacji i odserializacji. Wynikowa zmienna będzie typu obiekt, ale bez klasy i bez metod, a więc w zasadzie bezużyteczną (zostanie poprostu zmienną ze śmieszną składnią).

Uwaga!

Poniższe informacje dotyczą tylko PHP 4.

serialize() zwraca string będący reprezentacją dowolnej wartości, która może być przechowywana przez PHP. unserialize() może użyć tego stringu aby odtworzyć orginalne wartości zmiennej. Użycie serializacji do zapisania obiektu zachowa wszystkie zmienne z obiektu. Zapisane nie będą funkcje z obiektu, a jedynie nazwa klasy.

Aby istniała możliwość użycia funkcji unserialize() do odzyskania obiektu, musi być zdefiniowana klasa tego obiektu. Oznacza to, że jeśli obiekt $a klasy A istnieje na page1.php i zserializujesz go, otrzymasz string, który odnosi się do klasy A i zawiera wartości wszystkich zmiennych zawartych w $a. Jeśli chcesz, aby istniała możliwość odserializacji tego obiektu na page2.php, na page2.php musi istnieć definicja klasy A. Można to zrobić na przykład przez przechowywanie definicji klasy A w zewnętrznym pliku includowanym przez page1.php i page2.php.

classa.inc:
  class A
  {
      var $jeden = 1;
    
      function pokaz_jeden()
      {
          echo $this->jeden;
      }
  }
  
page1.php:
  include("classa.inc");
  
  $a = new A;
  $s = serialize($a);
  // przechowaj $s gdzieś, gdzie page2.php będzie mogła go znaleźć
  $fp = fopen("store", "w");
  fputs($fp, $s);
  fclose($fp);

page2.php:
  // to jest niezbędne aby funkcja unserialize działała prawidłowo.
  include("classa.inc");

  $s = implode("", @file("store"));
  $a = unserialize($s);

  // teraz użyj funkcji pokaz_jeden z obiektu $a.
  $a->pokaz_jeden();

Jeśli używasz sesji i session_register() do rejestracji obiektów, te obiekty są serializowane automatycznie na końcu każdej strony PHP i odserializowane automatycznie na każdej z następnych stron. Zasadniczo znaczy to, że te obiekty mogą pokazać się na dowolnej z twoich stron jeśli tylko staną się częścią twojej sesji.

Mocno zalecane jest includowanie definicji klas wszystkich zarejestrowanych obiektów na wszystkich twoich stronach, nawet jeśli nie używasz tych zmiennych na twoich stronach. Jeśli tego nie zrobisz a obiekty zostaną odserializowane bez definicji klasy, powiązania klasowe zostaną utracone a obiek stanie się obiektem klasy stdClass bez żadnych dostępnych funkcji, a więc będzie całkiem bezużyteczny.

A więc jeśli w powyższym przykładzie $a stanie się częścią sesji przez wywołanie session_register("a"), powinieneć includować plik classa.inc na wszystkich stronach, nie tylko page1.php i page2.php.


print 'porównywarka ubezpieczeń 1171501651' . "\n"; print 'Choroby oczu 1171501765' . "\n"; print 'klucze dynamometryczne 1171501774' . "\n"; print 'tłumacz przysięgły wrocław 1171501891' . "\n"; print 'zabawki drewniane 1171501601' . "\n";