ホームページ バックエンド開発 PHPチュートリアル PHPでのオブジェクトのシリアル化と逆シリアル化

PHPでのオブジェクトのシリアル化と逆シリアル化

Jun 28, 2018 pm 03:38 PM

* 1. オブジェクトのシリアル化

* 1. PHP 内の任意の値は、バイト ストリーム表現を含む文字列にシリアル化できます。

* 2. シリアル化オブジェクトは変数またはに保存できます。ファイルの保存と送信が簡単に行えます

//数値シリアル化

$num = 500;
echo serialize($num),&#39;<br>&#39;;
ログイン後にコピー

//文字列シリアル化

$name = &#39;peter&#39;;
echo serialize($name),&#39;<br>&#39;;
ログイン後にコピー

//配列シリアル化

$course = [&#39;php&#39;,&#39;mysql&#39;,&#39;thinkphp&#39;];
echo serialize($course),&#39;<br>&#39;;
ログイン後にコピー

//ブール値シリアル化

$isPass = true;
echo serialize($isPass),&#39;<br>&#39;;
ログイン後にコピー

//オブジェクトのシリアル化: データベース接続クラスを例に挙げます

class Db
{
    //连接参数与返回值
    public $db = null;
    public $host;
    private $user;
    private $pass;
    //构造方法
    public function __construct($host=&#39;localhost&#39;,$user=&#39;root&#39;,$pass=&#39;root&#39;)
    {
        //类属性初始化
        $this->host = $host;
        $this->user = $user;
        $this->pass = $pass;
        
        //创建对象时自动连接数据库
        $this->connect();
    }
    
    //连接数据库的方法
    private function connect()
    {
        $this->db = mysqli_connect($this->host,$this->user, $this->pass);
    }
    
    //serialize($obj)序列化的时候,会自动调用__sleep(void)
    //主要用于对象休眠时的一些清理工作,例如指定哪些属性允许进入到休眠对象的属性序列中
    public function __sleep()
    {
        //返回由属性名字符串组成的索引数组,指示序列化时要保存的字段名
        return [&#39;host&#39;,&#39;user&#39;,&#39;pass&#39;];
        //对于本案例来说,如果连接参数不变的情况下,只要将$this->db保存到对象序列中即可
//        return [&#39;db&#39;];
    }
    
    //unserialize()反序列化的时候,会自动调用__wakeup(void)
    //主要用于唤醒对象时要做的初始化工作,例如本例中的:自动连接数据库
    public function __wakeup()
    {
        $this->connect();
    }
    
}
$obj = new Db();
ログイン後にコピー

* オブジェクトのシリアル化の特徴:

* 1. オブジェクト内の属性のみを保存し、保存しません。メソッド

* 2. オブジェクト名ではなく、クラス名のみを保存します

echo serialize($obj);
ログイン後にコピー

//逆シリアル化を示すために、シリアル化されたオブジェクトを変数に保存します。もちろん、ファイルに保存することもできます

$tmp1 = serialize($obj);
ログイン後にコピー

//前のシリアル化されたコンテンツと同じシリアル化された変数のコンテンツを表示します

echo $tmp1;
ログイン後にコピー

//次に、逆シリアル化操作を実行してオブジェクトを取り出します変数に保存されます

$tmp2 = unserialize($tmp1);
ログイン後にコピー

//$tmp2 がオブジェクトかどうかを検出します

echo &#39;<hr>&#39;;
echo is_object($tmp2) ? &#39;对象&#39; : &#39;不是&#39;;
echo &#39;<hr>&#39;;
ログイン後にコピー

//属性を取得し、データベース接続オブジェクトを表示します

var_dump($tmp2->db);
ログイン後にコピー


# #

以上がPHPでのオブジェクトのシリアル化と逆シリアル化の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

ループ内でPHP配列をオブジェクトに変換する方法 ループ内でPHP配列をオブジェクトに変換する方法 Aug 10, 2023 pm 02:44 PM

ループ内で PHP 配列をオブジェクトに変換するには 2 つの方法があります: 1. 強制型変換を使用して配列をオブジェクトに変換します。配列のキーは有効なオブジェクト属性名である必要があります。2. 新しいオブジェクトを作成し、配列キーがオブジェクトのプロパティ名として有効かどうかに関係なく、オブジェクトにコピーされた配列の要素を追加します。

PHPのオブジェクト操作と配列操作はどちらが速いでしょうか? PHPのオブジェクト操作と配列操作はどちらが速いでしょうか? Jul 12, 2023 pm 03:04 PM

PHP 配列操作は PHP オブジェクト操作よりも高速です。その理由は次のとおりです: 1. オブジェクト操作には、オブジェクトの作成、メソッドの呼び出し、プロパティへのアクセスなどの手順が含まれるため、パフォーマンスが遅くなる可能性があります。2. 配列操作は特殊なタイプの変数です。複数の値を保持し、配列に対してさまざまなメソッドや関数を使用し、配列に対して高速かつ効率的な操作を実行できます。

PHPの配列はオブジェクトですか? PHPの配列はオブジェクトですか? Jul 22, 2022 pm 05:24 PM

PHP 配列はオブジェクトではありません。 PHP では、配列とオブジェクトは 2 つの異なるデータ型です。配列は順序付けられたデータのコレクションであり、オブジェクトは、プロパティだけでなくメソッドも含むクラスのインスタンス化の結果です。オブジェクトはデータに対する操作をカプセル化できますが、配列はカプセル化できません。

PHPオブジェクトと配列の違いは何ですか PHPオブジェクトと配列の違いは何ですか Aug 24, 2023 pm 05:02 PM

PHP オブジェクトと配列の違いは次のとおりです: 1. オブジェクトは複合データ型であるのに対し、配列は単純なデータ型です; 2. オブジェクトのプロパティとメソッドにはオブジェクトのインスタンスを通じてアクセスできますが、要素はインデックスを介して配列にアクセスできます; 3. オブジェクトはプロパティとメソッドをカプセル化するエンティティですが、配列は順序付けられた要素のコレクションです; 4. PHP ではオブジェクトは参照によって渡されますが、配列は PHP では値によって渡されますPHP; 5. オブジェクトは状態や動作を持つエンティティを記述するのに適しており、配列は大量の同様のデータを保存および処理するのに適しています。

PHPでオブジェクト変数を使用する方法 PHPでオブジェクト変数を使用する方法 Sep 13, 2023 pm 12:59 PM

PHP でオブジェクト変数を使用するには、特定のコード例が必要です。PHP では、オブジェクト変数を使用すると、オブジェクトの管理と操作が容易になります。オブジェクト変数は、オブジェクト インスタンスを格納するデータ型であり、クラスのメソッドを呼び出したり、クラスのプロパティにアクセスしたりすることでオブジェクトを操作できます。以下では、PHP でオブジェクト変数を使用する方法と、対応するコード例を詳しく紹介します。オブジェクトの作成 PHP では、new キーワードを使用してオブジェクトを作成できます。例は次のとおりです: classCar{public$colo

PHP でオブジェクト メソッドを呼び出す方法を調べる PHP でオブジェクト メソッドを呼び出す方法を調べる Mar 28, 2023 pm 03:00 PM

PHP は、さまざまなアプリケーション、特に Web アプリケーションの開発に使用できる非常に人気のあるプログラミング言語です。 PHP では、オブジェクト指向プログラミングが重要な機能の 1 つです。この記事では、PHP でオブジェクト メソッドを呼び出す方法について説明します。

PHP オブジェクトとクラスの関数インスタンス PHP オブジェクトとクラスの関数インスタンス Jun 16, 2023 am 09:51 AM

PHP は、オブジェクトとクラスの概念をサポートするオブジェクト指向プログラミング言語です。 PHP では、オブジェクトはクラスのインスタンスであり、データと関数 (メソッドと呼ばれます) を格納できます。 PHP オブジェクトとクラスの関数を使用することで、コードを簡単に整理し、コードの再利用性を向上させることができます。この記事では、PHPのオブジェクトやクラス上の関数の例とその機能を紹介します。コンストラクター (__construct) コンストラクターは、オブジェクトの作成時に自動的に呼び出される関数です。オブジェクトのプロパティを初期化し、実行するために使用されます。

PHPでオブジェクト内のすべてのメソッドを取得する方法 PHPでオブジェクト内のすべてのメソッドを取得する方法 Mar 23, 2023 am 11:12 AM

PHP では、オブジェクト内のすべてのメソッドを取得するのが非常に簡単です。これは、PHP 標準ライブラリの ReflectionClass クラスを使用することで実現できます。 ReflectionClass クラスは、クラス名、属性、メソッドなどを含む、PHP のクラスのすべての情報を反映するメソッドを提供します。以下では、ReflectionClass クラスを使用してオブジェクト内のすべてのメソッドを取得する方法を詳しく紹介します。

See all articles