<?php
 // === Classe Personnel ===
 class Personnel
 { // -- Les propriétés --
   private $_nom    ;
   private $_prenom ;
   private $_age    ;
   // -- Constructeur --
   function __construct($n,$p,$a) {
    $this->_nom=$n;$this->_prenom=$p;$this->_age=$a;
   }
   public function Affiche() {
    echo "Nom : ".$this->_nom." - "       ;
    echo "Prénom : ".$this->_prenom." - " ;
    echo "Age : ".$this->_age.PHP_EOL     ;
   }
   // Méthode magique __sleep() Appelée par serialize() 
   public function __sleep() {
    echo '-- Exécution de __sleep --'.PHP_EOL;
     return array('_nom','_prenom');
   }
   // Méthode magique __sleep() Appelée par unserialize() 
   public function __wakeup() {
    echo '-- Exécution de __wakeup --'.PHP_EOL;
    $this->_nom    = ucwords($this->_nom)   ;
    $this->_prenom = ucwords($this->_prenom);
    $this->_age    = intval($this->_age)    ;
   }
 }
 // === Programme ===
 $UnePers1 = new Personnel("dupont","jean",23);
 // sérialisation et sauvegarde
 $ChainePers1 = serialize($UnePers1);
 file_put_contents('sauve2_objet.txt', $ChainePers1);
 // lecture du fichier et reconstrcution de l'objet
 $ChainePers2 = file_get_contents('sauve2_objet.txt');
 $UnePers2    = unserialize($ChainePers2);
 // Afficahge de l'objet restauré
 echo "-- Objet restauré ---".PHP_EOL;
 $UnePers2->Affiche();
?>
