Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Serializable w klasie ArrayObject, Jak zaimplementować interfejs Serializable w klasie ArrayObject?
bongdigibonbon
post 14.11.2008, 12:26:29
Post #1





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 27.06.2007

Ostrzeżenie: (0%)
-----


Witam
W jaki sposób zaimplementować metody interfejsu Serializable lub metody __sleep, __wakeup w klasie dziedziczącej po ArrayObject, aby zachować zarówno dane przechowywane w obiekcie danej klasy jak i klasy bazowej.
Przykład:
  1. <?php
  2. class A extends ArrayObject {
  3.        private $_skladowa;
  4.        public function __construct() {
  5.            $this->_skladowa=true;
  6.        }
  7.        public function getSkladowa() { return $this->_skladowa; }
  8.    }
  9.  
  10.    $a=new A();
  11.    $a->append('Jeden');
  12.    $a->append('Dwa');
  13.  
  14.    $b=unserialize(serialize($a));
  15. ?>

W tym przypadku obiekt "b" posiada wartości 'Jeden', 'Dwa', ale składowa "_skladowa" ma wartość null.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
bongdigibonbon
post 14.11.2008, 15:14:38
Post #2





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 27.06.2007

Ostrzeżenie: (0%)
-----


Czyli tak?

  1. <?php
  2. public function serialize() {
  3.            // Pobranie danych z ArrayObject.
  4.            $arrayObject=$this->getArrayCopy();
  5.            // Pobranie wszystkich składowych obiektu.
  6.            $zmienna1=$this->zmienna1;
  7.            $zmienna2=$this->zmienna2;
  8.            // ...
  9.            // Zwrócenie własnej struktury.
  10.            return serialize(compact('arrayObject', 'zmienna1', 'zmienna2' /* , ... */));
  11.        }
  12.        public function unserialize($string) {
  13.            extract(unserialize($string));
  14.            // Wycztanie danych do arrayObject
  15.            parent::__construct($arrayObject);
  16.            // Wczytanie wszytkich zmiennych.
  17.            $this->zmienna1=$zmienna1;
  18.            $this->zmienna2=$zmienna2;
  19.            // ...
  20.        }
  21. ?>


Wszystkie właściwości obiektu należy ustawiać ręcznie? Nie ma na to innego sposobu?
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 20:20