Aller au contenu principal

Sérialisation des objets

Notions théoriques

La sérialisation est un processus qui nous permet de convertir un objet en une chaîne de caractères, ce qui peut être très utile pour le stockage ou la transmission d'informations.

En PHP, nous utilisons les fonctions serialize() et unserialize() pour gérer ce processus :

  • serialize($object) va transformer l'objet $object en une chaîne de caractères que nous pouvons ensuite stocker dans un fichier ou une base de données.

  • unserialize($string) va transformer la chaîne $string (qui a été générée par serialize()) en retour à sa forme d'objet original.

C'est un moyen efficace de stocker l'état actuel d'un objet pour une utilisation ultérieure.

Exemple pratique

class Guerrier {
public $nom;
public $force;

public function __construct($nom, $force) {
$this->nom = $nom;
$this->force = $force;
}
}

$guerrier1 = new Guerrier("Conan", 100);

// Sérialisation
$guerrier_serialise = serialize($guerrier1);
file_put_contents('guerrier.txt', $guerrier_serialise);

// Désérialisation
$guerrier_recupere = file_get_contents('guerrier.txt');
$guerrier2 = unserialize($guerrier_recupere);

print($guerrier2->nom); // Affiche "Conan"

Dans cet exemple, nous créons un guerrier, le sérialisons et le stockons dans un fichier. Ensuite, nous récupérons ces informations du fichier, le désérialisons et affichons son nom.

Test de mémorisation/compréhension


Que fait la sérialisation ?


Pourquoi utiliserions-nous la sérialisation ?


Où pouvez-vous stocker un objet sérialisé ?


Quelle fonction PHP est utilisée pour sérialiser un objet ?


Quelle fonction PHP est utilisée pour désérialiser une chaîne ?



TP pour réfléchir et résoudre des problèmes

Créez une classe Magicien avec des propriétés nom et magie. Créez un mage, sérialisez-le et stockez-le dans un fichier. Récupérez ensuite le mage du fichier, désérialisez-le et affichez ses propriétés.

Voici les étapes détaillées pour réaliser le TP :

  1. Création de la classe Magicien : Commencez par créer une nouvelle classe appelée Magicien. Cette classe doit avoir deux propriétés publiques : nom et magie.

  2. Ajout d'un constructeur à la classe Magicien : Ajoutez un constructeur à la classe Magicien. Ce constructeur doit prendre deux paramètres ($nom et $magie) qui sont utilisés pour initialiser les propriétés nom et magie.

  3. Création d'une instance de la classe Magicien : Créez une nouvelle instance de la classe Magicien, en passant les valeurs appropriées pour le nom et la magie.

  4. Sérialisation de l'objet Magicien : Utilisez la fonction serialize() pour transformer l'objet Magicien en une chaîne de caractères.

  5. Stockage de l'objet sérialisé dans un fichier : Utilisez la fonction file_put_contents() pour écrire la chaîne sérialisée dans un fichier. Vous pouvez nommer ce fichier "mage.txt".

  6. Récupération de l'objet sérialisé du fichier : Utilisez la fonction file_get_contents() pour lire le contenu du fichier "mage.txt" dans une variable.

  7. Désérialisation de l'objet Magicien : Utilisez la fonction unserialize() pour transformer la chaîne récupérée du fichier en un objet Magicien.

  8. Affichage des propriétés de l'objet Magicien : Utilisez l'instruction print pour afficher les propriétés nom et magie de l'objet Magicien.

Une solution