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:
- Tworzenie klasy z metodami magicznymi: Zdefiniujmy klasę
User
z właściwościaminame
,email
ipassword
. Dodamy metody__sleep()
i__wakeup()
. - Tworzenie obiektu i zapisywanie go w sesji: Utworzymy obiekt klasy
User
i zapiszemy go w sesji za pomocą funkcjiserialize()
. - Odzyskiwanie obiektu z sesji: Odzyskamy obiekt z sesji za pomocą funkcji
unserialize()
. Zwróć uwagę, że hasło nie zostanie odzyskane.
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';
}
}
?>
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.