La sauvegarde et la relecture des objets s'effectuent respectivement par l'intermédiaire de la fonction serialize et unserialize.

La fonction de sérialisaton permet de transformer un objet en une chaîne de caractères pouvant être facilement transmise à une autre page lors d'une session.

La fonction de désérialisation permet de reconstituer l'objet à partir de la chaîne de caractères précitées.

La fonction session_register facilite la transmission d'un objet durant une session en linéarisant et délinéarisant d'une façon automatique les objets.

Néanmoins dans les deux cas, il est nécessaire d'inclure la définition de la classe instanciant l'objet dans toutes les pages susceptibles de contenir cet objet lors d'une session. Si cela n'est pas fait, l'objet existera dans des documents PHP sans leurs classes et partant seront inopérants.

Exemple [voir]
<?php
// Page de définition de classes trigo.inc

  class trigonometrie
  {
    var $AB;
    var $BC;
    var $AC;

    function hypothenuse()
    {
      $resultat = sqrt(pow($this->BC, 2) + pow($this->AC, 2));
      return number_format($resultat, 2, ',', ' ');
    }
  }
?>

<?php
// Première page : saisie.php

  // inclusion de la définition de classe
  include("trigo.inc");

  // crée une instance de l'objet
  $trigo = new trigonometrie;

  // sérialise l'objet
  $objet_chaine = serialize($trigo);

  // ouvre un fichier en écriture seule
  $fichier = fopen("fic", "w");

  // écrit l'objet linéarisé dans le fichier
  fputs($fichier, $objet_chaine);

  // ferme le fichier
  fclose($fichier);
?>
<form action="resultat.php" method="post">
  <table border="0">
    <tr>
      <th colspan="2">
        <h3>Calcul de l'hypothénuse d'un triangle rectangle</h3>
      </th>
    </tr>
    <tr>
      <td><u>longueur :</u></td>
      <td><input type="text" name="longueur" size="10" maxlength="10"></td>
    </tr>
    <tr>
      <td><u>hauteur :</u></td>
      <td><input type="text" name="hauteur" size="10" maxlength="10"></td>
    </tr>
    <tr>
      <th colspan="2"><input type="submit" value="Calculer"></th>
    </tr>
  </table>
</form>

<?php
// Seconde page : resultat.php

  // inclusion de la définition de classe
  include("trigo.inc");

  /* regroupe tous les éléments du tableau 
retourné par la fonction file dans une chaîne */
  $objet_chaine = implode("", file("fic"));

  // désérialise l'objet
  $trigo = unserialize($objet_chaine);

  // appelle deux propriétés et une méthode de l'objet
  $trigo->BC = $hauteur;
  $trigo->AC = $longueur;
?>
<table border="0">
  <tr>
    <th>
      <h3>Calcul de l'hypothénuse d'un triangle rectangle</h3>
    </th>
  </tr>
  <tr>
    <td>hauteur (BC)</td>
    <td>=</td>
    <td><?php echo $trigo->BC ?></td>
  </tr>
  <tr>
    <td>longueur (AC)</td>
    <td>=</td>
    <td><?php echo $trigo->AC ?></td>
  </tr>
  <tr>
    <td>hypothénuse (AB)</td>
    <td>=</td>
    <td><?php echo $trigo->hypothenuse() ?></td>
  </tr>
</table>
Sommaire