Magiczna metoda __sleep() i __wakeup()

Założenie: Pokażemy, jak użyć metod __sleep() i __wakeup() do kontrolowania serializacji i deserializacji obiektu, zapisując tylko wybrane właściwości do sesji.

Krok po kroku:

  1. Tworzenie klasy z metodami magicznymi: Zdefiniujmy klasę User z właściwościami name, email i password. Dodamy metody __sleep() i __wakeup().
  2. 
    name = $name;
            $this->email = $email;
            $this->password = $password;
        }
    
        public function __sleep() {
            return ['name', 'email']; // Zwracamy tylko nazwę i email do serializacji
        }
    
        public function __wakeup() {
            // Możemy tutaj wykonać jakieś akcje po deserializacji, np. ustawić domyślną wartość hasła.
            $this->password = 'default_password'; 
        }
    }
    ?>
    				
  3. Tworzenie obiektu i zapisywanie go w sesji: Utworzymy obiekt klasy User i zapiszemy go w sesji za pomocą funkcji serialize().
  4. 
    
    				
  5. Odzyskiwanie obiektu z sesji: Odzyskamy obiekt z sesji za pomocą funkcji unserialize(). Zwróć uwagę, że hasło nie zostanie odzyskane.
  6. 
    name; // Wyświetli "Jan Kowalski"
    echo $user->email; // Wyświetli "jan@example.com"
    echo $user->password; // Wyświetli "default_password"
    ?>
    				

Pamiętaj, że hasło jest przechowywane w zmiennej prywatnej i nie jest serializowane. Metody __sleep() i __wakeup() pozwalają na kontrolę nad tym, jakie dane są zapisywane i odczytywane, co jest ważne ze względów bezpieczeństwa.

Ten przykład pokazuje podstawowe zastosowanie metod __sleep() i __wakeup(). Zachęcamy do dalszego zgłębiania tematu serializacji i deserializacji w PHP.

Dodaj komentarz 0

Your email address will not be published. Required fields are marked *