ホームページ  >  記事  >  バックエンド開発  >  PHPオブジェクトの保存と送信(オブジェクトのシリアライズ)

PHPオブジェクトの保存と送信(オブジェクトのシリアライズ)

巴扎黑
巴扎黑オリジナル
2016-11-11 17:57:541117ブラウズ


PHPオブジェクトの保存と送信(オブジェクトのシリアル化)

オブジェクトの保存と送信

実際のプロジェクトアプリケーションでは、スクリプトが実行されるまで変数が完了しないため、一部のタスクは1〜2ページで完了できません。 、このページで生成されたオブジェクトが他のページで使用されると問題が発生します。

オブジェクトとそのメソッドを、オブジェクトを使用したいページに渡す必要がある場合、比較的単純で実行可能な方法は、オブジェクトをシリアル化して保存するか、必要なページに直接転送することです。オブジェクトをセッション変数として登録します。

シリアル化されたオブジェクト

オブジェクトのシリアル化とは、オブジェクトを保存可能なバイト ストリームに変換することです。オブジェクトをネットワーク経由で送信する必要がある場合、またはオブジェクトをファイルまたはデータベースに書き込む必要がある場合は、オブジェクトをシリアル化する必要があります。

シリアル化の完全なプロセスには 2 つのステップが含まれます。1 つはオブジェクトをバイナリ文字列に変換するシリアル化で、もう 1 つはオブジェクトをシリアル化するために使用されるシリアル化解除です。次に、バイナリ文字列がオブジェクトに変換され、unserialize() 関数を使用してシリアル化されたオブジェクトが逆シリアル化されます。このようにして、すべてのプロセスが完了すると、オブジェクト内の型構造とデータが完成します。

構文:

string Serialize(mixed value )

mixed unserialize( string str [, string callback] )

例:

<?php
class Person {
    private $name;
    private $age;
    function __construct($name, $age) {
        $this->name = $name;
        $this->age = $age;
    }
    function say() {
echo "我的名字叫:".$this->name."<br />";
echo " 我的年龄是:".$this->age;
    }
}
$p1 = new Person("张三", 20);
$p1_string = serialize($p1);
//将对象序列化后写入文件
$fh = fopen("p1.text", "w");
fwrite($fh, $p1_string);
fclose($fh);
?>

p1.text ファイルを開くと、そこに書かれている内容は次のとおりです。

O:6 :"人物":2:{s:12:"人物名";s:4:"張三";s:11:"人物年齢";i:20;}

しかし通常は上記シーケンスは直接解析されません。文字が生成されます。

逆シリアル化:

<?php
class Person {
    private $name;
    private $age;
    function __construct($name, $age) {
        $this->name = $name;
        $this->age = $age;
    }
    function say() {
echo "我的名字叫:".$this->name."<br />";
echo " 我的年龄是:".$this->age;
    }
}
$p2 = unserialize(file_get_contents("p1.text"));
$p2 -> say();
?>

この例を実行し、出力:

私の名前: Zhang San

私の年齢: 20


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。