ホームページ  >  記事  >  バックエンド開発  >  PHP は、serialize() と unserialize() を使用してオブジェクトをスーパー変数にします

PHP は、serialize() と unserialize() を使用してオブジェクトをスーパー変数にします

WBOY
WBOYオリジナル
2016-06-13 13:15:43793ブラウズ

PHP は、serialize() と unserialize() を使用してオブジェクトをスーパー変数にします

マニュアル内の原文と要約:

PHP関数のserialize()とunserialize()の解説と事例。シリアル化された文字列を PHP 値に変換するには、unserialize() を使用します。 Serialize() はリソース以外の任意の型を処理できます。それ自体への参照を含む配列を Serialize() することもできます。 Serialize() している配列/オブジェクト内の参照も保存されます。

serialize() は文字列を返します。この文字列には値を表すバイト ストリームが含まれており、どこにでも保存できます。これにより、型や構造を失うことなく、PHP 値の保存や受け渡しが容易になります。

シリアル化された文字列を PHP 値に戻したい場合は、unserialize() を使用できます。 Serialize() はリソース以外の任意の型を処理できます。それ自体への参照を含む配列を Serialize() することもできます。 Serialize() している配列/オブジェクト内の参照も保存されます。

オブジェクトをシリアル化するとき、PHP はシーケンス アクションの前にオブジェクトのメンバー関数 __sleep() の呼び出しを試みます。これにより、オブジェクトがシリアル化される前にクリーンアップ操作を実行できるようになります。同様に、unserialize() を使用してオブジェクトを復元する場合、__wakeup() メンバー関数が呼び出されます。

注: PHP 3 では、オブジェクトのプロパティはシリアル化されますが、メソッドは失われます。 PHP 4 ではこの制限がなくなり、プロパティとメソッドの両方を保存できるようになりました。詳細については、「クラスとオブジェクト」の「シリアル化されたオブジェクト」セクションを参照してください。

PHP マニュアルでの Serialize() と unserialize() の説明は次のとおりです。

serialize ― 値の保存可能な表現を生成します

シリアル化 — 値の保存可能な表現を生成します

unserialize ― 保存された表現から PHP 値を作成します

unserialize ― 格納された表現から PHP 値を作成します

serialize、「シリアル化、連続化」と訳され、通常は「シリアル化

と呼ばれます

この関数は、特に unserialize と一緒に使用すると非常に便利です

データをデータベースに保存する場合やファイルに記録する場合の方が便利だと思います

もちろん、この種のデータは比較的複雑でなければなりません (複雑ではなく、シリアル化する必要はありません。少なくとも配列でなければならないと思います)。また、「インデックスまたは主キー」以外のものでなければなりません。もちろん、このデータベース フィールドはデータベース内にあることが最適です。もちろん、特定のデータは暗号化または変更されていないため、システムは検索プログラムとは何の関係もありません。 🎜>


例: (オブジェクトについて話すだけで、残りは簡単です)

CPersonal.php

<?php
class Person
{
    public $age;

    function __construct($age)
    {
        $this->age=$age;
    }

    function walk()
    {
        echo "I'm walking...!";
    }

}
?>
test0.php はここにオブジェクトを保存します

<?php
session_start();
include_once './CPerson.php';

$person=new Person(22);
$b=serialize($person);

$_SESSION["object"]=$b;

?>
test1.php アクセス オブジェクト

<?php
session_start();
include_once './CPerson.php';
$p=$_SESSION['object'];
$a=unserialize($p);
$a->walk();
echo $a->age;
?>



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