Position actuelle: Accueil> Derniers articles> Introduction pour sérialiser la fonction: comment convertir les variables PHP en chaînes?

Introduction pour sérialiser la fonction: comment convertir les variables PHP en chaînes?

gitbox 2025-05-27

En PHP, le sérialisation est une fonction très importante pour convertir les variables PHP en chaînes qui peuvent être stockées ou transférées. Ceci est utile pour enregistrer des structures de données PHP complexes (telles que des tableaux, des objets) dans une base de données, un système de fichiers ou un transfert sur un réseau. Ensuite, nous allons approfondir le fonctionnement des fonctions sérialisées et comment l'utiliser pour gérer les variables PHP.

Quelle est la fonction sérialisée ?

La fonction de la fonction sérialisée est de convertir les variables PHP (telles que des tableaux, des objets, etc.) en format de chaîne storable. Avec cette fonction, nous pouvons convertir des structures de données variables complexes en chaînes afin qu'elles puissent être enregistrées dans des fichiers ou transférées vers d'autres applications sur le réseau. L'opération inverse consiste à utiliser la fonction non sérialisée , qui peut reconvertir la chaîne à la variable PHP d'origine.

Comment utiliser la fonction sérialisée ?

La syntaxe de la fonction de sérialisation est la suivante:

 string serialize ( mixed $value )
  • Paramètres : Cette fonction accepte une valeur de paramètre $ , qui peut être n'importe quel type de données PHP, y compris des tableaux, des objets, des chaînes, des nombres, etc.

  • Valeur de retour : renvoie une chaîne représentant la forme sérialisée de la variable PHP donnée.

Exemple 1: sérialiser un tableau simple

 <?php
// Définir un simple tableau
$array = array("apple", "banana", "cherry");

// Sérialiser les tableaux
$serialized_array = serialize($array);

// Sortie sérialisée chaîne
echo $serialized_array;
?>

La sortie peut être la suivante:

 a:3:{i:0;s:5:"apple";i:1;s:6:"banana";i:2;s:6:"cherry";}

Dans cet exemple, Serialize convertit le tableau de tableau $ en une longue chaîne représentant la structure et le contenu du tableau.

Exemple 2: sérialiser un objet

 <?php
class Fruit {
    public $name;
    public $color;

    function __construct($name, $color) {
        $this->name = $name;
        $this->color = $color;
    }
}

// Créer un objet
$fruit = new Fruit("apple", "red");

// Sérialiser les objets
$serialized_object = serialize($fruit);

// Sortie sérialisée chaîne
echo $serialized_object;
?>

La sortie peut être la suivante:

 O:5:"Fruit":2:{s:4:"name";s:5:"apple";s:5:"color";s:3:"red";}

Dans cet exemple, nous sérialisons un objet de fruit en une chaîne et pouvons le restaurer plus tard via un non-service .

Comment stocker ou transférer des variables PHP en sérialisant ?

L'un des principaux scénarios d'application de sérialisation consiste à stocker des variables dans des bases de données ou des fichiers, ou de les transférer sur le réseau. Lors du stockage des données, nous sérialisons souvent des structures de données complexes (telles que des tableaux ou des objets) en chaînes pour simplifier les procédures stockées.

Stocker des données sérialisées dans la base de données

Supposons que nous ayons un champ de base de données qui contient les informations de panier de l'achat de l'utilisateur. Les informations de CART sont un tableau multidimensionnel contenant des articles, la quantité et le prix. Nous pouvons utiliser la fonction Serialize pour la convertir en une chaîne et enregistrer la chaîne dans la base de données.

 <?php
// Supposons que le panier est un tableau multidimensionnel
$cart = array(
    array("product" => "apple", "quantity" => 2, "price" => 3.5),
    array("product" => "banana", "quantity" => 1, "price" => 1.2),
    array("product" => "cherry", "quantity" => 3, "price" => 2.8)
);

// Sérialiser les données du panier
$serialized_cart = serialize($cart);

// Supposons que nous soyons connectés à la base de données et prêts à insérer les données
$sql = "INSERT INTO cart_table (user_id, cart_data) VALUES (1, '$serialized_cart')";
// Effectuer des opérations de base de données
?>

Lorsque nous devons obtenir ces données CART à partir de la base de données, nous pouvons les reconvertir en un tableau PHP en utilisant un non-série .

 <?php
// Supposons que nous obtenons des données de panier d&#39;achat sérialisés de la base de données
$retrieved_cart_data = "a:3:{i:0;a:3:{s:7:\"product\";s:5:\"apple\";s:8:\"quantity\";i:2;s:5:\"price\";d:3.5;}i:1;a:3:{s:7:\"product\";s:6:\"banana\";s:8:\"quantity\";i:1;s:5:\"price\";d:1.2;}i:2;a:3:{s:7:\"product\";s:6:\"cherry\";s:8:\"quantity\";i:3;s:5:\"price\";d:2.8;}}";

// utiliser unserialize Restaurer le tableau d&#39;origine
$cart = unserialize($retrieved_cart_data);

// Imprimez le tableau restauré
print_r($cart);
?>

Résultat de sortie:

 Array
(
    [0] => Array
        (
            [product] => apple
            [quantity] => 2
            [price] => 3.5
        )

    [1] => Array
        (
            [product] => banana
            [quantity] => 1
            [price] => 1.2
        )

    [2] => Array
        (
            [product] => cherry
            [quantity] => 3
            [price] => 2.8
        )
)

De cette façon, nous pouvons convertir des structures de données complexes en formulaires de chaîne pour un stockage et une transmission faciles.

Choses à noter

  • Sécurité : la désérialisation des données provenant de sources non fiables (telles que la saisie de l'utilisateur) peut entraîner des problèmes de sécurité tels que l'injection d'objets PHP. Pour éviter ces problèmes, assurez-vous de désérialiser uniquement les données de confiance ou envisagez d'utiliser JSON_ENCODE et JSON_DECODE au lieu de sérialiser et de se non-série , en particulier lorsque les objets sont impliqués.

  • Problèmes de performances : Serialize peut consommer plus de mémoire et de temps de traitement lors du traitement des structures de données plus grandes, alors veillez à l'utiliser.


Résumer

Avec sérialisation et non désérialisé , les développeurs PHP peuvent facilement convertir les structures de données complexes en chaînes pour un stockage et une transmission faciles. Ceci est très utile pour partager des données entre différents systèmes ou services, ou pour enregistrer des données dans les bases de données et les fichiers. N'oubliez pas d'être prudent lors de la gestion des données sensibles ou non fiables pour éviter les vulnérabilités de sécurité.