Tutoriel sur la façon de sérialiser des objets sérialisés en PHP

巴扎黑
Libérer: 2023-03-14 20:00:01
original
2250 Les gens l'ont consulté

Stockage et transmission d'objets

Dans les applications de projet réelles, certaines tâches ne peuvent pas être réalisées en une ou deux pages puisque les variables sont libérées après l'exécution du script, ce que nous avons généré sur cette page. L'objet a rencontré des problèmes en essayant de l'utiliser sur d'autres pages.

Si nous devons transmettre l'objet et ses méthodes à la page où nous voulons utiliser l'objet, un moyen plus simple et plus réalisable consiste à sérialiser l'objet et à le stocker ou à le transférer directement vers la page où il est nécessaire. Une autre façon consiste à enregistrer en tant que variable de session.

Tutoriel sur la façon de sérialiser des objets sérialisés en PHPObjet sérialisé

La sérialisation d'objet consiste à convertir l'objet en un flux d'octets pouvant être stocké. Lorsque nous devons transmettre un objet sur le réseau ou écrire l'objet dans un fichier ou une base de données, nous devons sérialiser l'objet.

Le processus complet de sérialisation comprend deux étapes : l'une est la sérialisation, qui consiste à convertir l'objet en une chaîne binaire. La fonction serialize() est utilisée pour sérialiser un objet ; convertir l'objet en chaîne binaire. L'objet est sérialisé en chaîne binaire puis converti en objet La fonction unserialize() est utilisée pour désérialiser un objet sérialisé. De cette façon, après l’ensemble du processus, la structure du type et les données de l’objet sont complètes.

Syntaxe :

string serialize( mixed value )
mixed unserialize( string str [, string callback] )
Copier après la connexion

Exemple :

name = $name;
        $this->age = $age;
    }

    function say() {
	echo "我的名字叫:".$this->name."
";
	echo " 我的年龄是:".$this->age;
    }
}

$p1 = new Person("张三", 20);
$p1_string = serialize($p1);

//将对象序列化后写入文件
$fh = fopen("p1.text", "w");
fwrite($fh, $p1_string);
fclose($fh);
?>
Copier après la connexion

Ouvrez le fichier p1.text et le contenu qui y est écrit est le suivant :

O:6:"Person":2:{s:12:" Person name";s:4:"张三";s:11:" Person age";i:20;}
Copier après la connexion

Mais généralement les caractères générés par la sérialisation ci-dessus ne sont pas directement analysés.

Désérialisation :

name = $name;
        $this->age = $age;
    }

    function say() {
	echo "我的名字叫:".$this->name."
";
	echo " 我的年龄是:".$this->age;
    }
}

$p2 = unserialize(file_get_contents("p1.text"));
$p2 -> say();
?>
Copier après la connexion

En exécutant l'exemple, sortie :

我的名字叫:张三
我的年龄是:20
Copier après la connexion
Copier après la connexion
Invite
  1. En raison de la sérialisation, les objets ne peuvent pas sérialiser leurs méthodes, donc lors de la désérialisation, le fichier actuel doit contenir la classe correspondante ou nécessiter le fichier de classe correspondant.

  2. La sérialisation ne peut être utilisée qu'avec des utilisateurs limités, car les fichiers doivent être stockés ou écrits séparément pour chaque utilisateur, et le nom du fichier ne doit pas être répété. Dans le cas où l'utilisateur ne peut pas quitter normalement le navigateur, il n'y a aucune garantie que le fichier sera supprimé.

    Tutoriel sur la façon de sérialiser des objets sérialisés en PHPL'objet est enregistré en tant que variable de session

    Lorsqu'il y a un grand nombre d'utilisateurs, vous pouvez envisager d'utiliser la session pour enregistrer l'objet. Pour plus d'informations sur les sessions, consultez « Session PHP ».

    Exemple :

    name = $name;
            $this->age = $age;
        }
    
        function say() {
    	echo "我的名字叫:".$this->name."
    ";
    	echo " 我的年龄是:".$this->age;
        }
    }
    
    $_SESSION["p1"] = new Person("张三", 20);
    ?>
    Copier après la connexion

    Session de lecture :

    name = $name;
            $this->age = $age;
        }
    
        function say() {
    	echo "我的名字叫:".$this->name."
    ";
    	echo " 我的年龄是:".$this->age;
        }
    }
    
    $_SESSION["p1"] -> say();
    ?>
    Copier après la connexion

    Exécutez cet exemple, sortie :

    我的名字叫:张三
    我的年龄是:20
    Copier après la connexion
    Copier après la connexion

    Identique à la sérialisation, lorsque le L'objet enregistré est une variable de session, sa méthode ne peut pas être sauvegardée, donc lors de la lecture de la variable de session, le fichier courant doit contenir la classe correspondante ou le fichier classe correspondant à require.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!