ホームページ >バックエンド開発 >PHPチュートリアル >PHP でオブジェクトをシリアル化する方法のチュートリアル
実際のプロジェクトアプリケーションでは、1 ページや 2 ページでは完了できないタスクもあります。スクリプトの実行後に変数が解放されるため、このページで生成したオブジェクトは必要なときに使用できます。他のページで使用すると問題が発生します。
オブジェクトとそのメソッドを、オブジェクトを使用したいページに渡す必要がある場合、比較的単純で実行可能な方法は、オブジェクトをシリアル化して保存するか、必要なページに直接転送することです。オブジェクトをセッション変数として登録します。
オブジェクトのシリアル化とは、オブジェクトを保存可能なバイト ストリームに変換することです。オブジェクトをネットワーク経由で送信する必要がある場合、またはオブジェクトをファイルまたはデータベースに書き込む必要がある場合は、オブジェクトをシリアル化する必要があります。
シリアル化の完全なプロセスには 2 つのステップが含まれます。1 つはオブジェクトをバイナリ文字列に変換するシリアル化で、もう 1 つはオブジェクトをシリアル化するために使用されるシリアル化解除です。次に、バイナリ文字列がオブジェクトに変換され、unserialize() 関数を使用してシリアル化されたオブジェクトが逆シリアル化されます。このようにして、すべてのプロセスが完了すると、オブジェクト内の型構造とデータが完成します。
構文:
string serialize( mixed value ) mixed unserialize( string str [, string callback] )
例:
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); ?>
p1.text ファイルを開くと、そこに書かれた内容は次のとおりです:
O:6:"Person":2:{s:12:" Person name";s:4:"张三";s:11:" Person age";i:20;}
ただし、通常、上記のシリアル化によって生成された文字は直接解析されません。
逆シリアル化:
name = $name; $this->age = $age; } function say() { echo "我的名字叫:".$this->name." "; echo " 我的年龄是:".$this->age; } } $p2 = unserialize(file_get_contents("p1.text")); $p2 -> say(); ?>
この例を実行すると、出力は次のようになります:
我的名字叫:张三 我的年龄是:20
シリアル化されたオブジェクトはメソッドをシリアル化できないため、シリアル化解除するときは、現在のファイルに対応するクラスが含まれているか、対応するクラス ファイルが必要です。
ファイルはユーザーごとに個別に保存または書き込む必要があり、ファイル名を繰り返してはいけないため、シリアル化は限られたユーザーでのみ使用できます。ユーザーがブラウザを正常に終了できない場合、ファイルが削除される保証はありません。
ユーザーの数が多い場合は、セッションを使用してオブジェクトを保存することを検討できます。セッションの詳細については、「PHP セッション」を参照してください。
例:
name = $name; $this->age = $age; } function say() { echo "我的名字叫:".$this->name." "; echo " 我的年龄是:".$this->age; } } $_SESSION["p1"] = new Person("张三", 20); ?>
セッションの読み取り:
name = $name; $this->age = $age; } function say() { echo "我的名字叫:".$this->name." "; echo " 我的年龄是:".$this->age; } } $_SESSION["p1"] -> say(); ?>
この例を実行すると、出力:
我的名字叫:张三 我的年龄是:20
シリアル化と同様に、登録されたオブジェクトがセッション変数の場合、そのメソッドは保存できないため、セッション変数を読み取るときに、現在のファイルには対応するクラスが含まれているか、対応するクラス ファイルが必要です。
以上がPHP でオブジェクトをシリアル化する方法のチュートリアルの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。