ホームページ >バックエンド開発 >PHPの問題 >PHP でのシリアライズとアンシリアライズの使用法の簡単な分析

PHP でのシリアライズとアンシリアライズの使用法の簡単な分析

PHPz
PHPzオリジナル
2023-03-24 14:57:241519ブラウズ

PHP は、Web 開発によく使用される人気のあるプログラミング言語です。その中でも、serialize と unserialize は、PHP オブジェクトを文字列に変換し、逆シリアル化できる 2 つの非常に便利な関数です。

  1. serialize の使用法

serialize は、PHP オブジェクトを保存または送信できる文字列に変換するために使用される PHP 関数です。基本的な構文は次のとおりです。

$serialized_string = serialize($object);

このうち、$object はシリアル化する PHP オブジェクト、$serialized_string はオブジェクトをシリアル化した後に取得される文字列です。

たとえば、$person という名前の PHP オブジェクトがあり、そのプロパティに名前、年齢、性別が含まれているとします:

$person = new stdClass;
$person->name = "Tom";
$person->age = 30;
$person->gender = "male";

serialize を使用して文字列にシリアル化できます:

$serialized_person = serialize($person);

echo ステートメントを使用して $serialized_person を出力すると、シリアル化後に取得された文字列を表示できます:

echo $serialized_person;

出力結果は次のとおりです:

O:8:"stdClass":3:{s:4:"name";s:3:"Tom";s:3:"age";i:30;s:6:"gender";s:4:"male";}

$person オブジェクトが正常に作成されたことがわかります。長い文字列に変換されます。この文字列には、オブジェクトのすべてのプロパティと、各プロパティのタイプと長さが含まれます。

ただし、シリアル化された文字列は、多くの特殊文字が含まれており、読み取りや処理が難しいため、表示や保存に直接使用することはできないことに注意してください。

  1. unserialize の使用法

unserialize は、serialize の逆関数で、シリアル化された文字列を PHP オブジェクトに変換するために使用されます。基本的な構文は次のとおりです。

$object = unserialize($serialized_string);

このうち、$serialized_string は逆シリアル化する文字列、$object は逆シリアル化後に取得される PHP オブジェクトです。

たとえば、前の例でシリアル化された文字列 $serialized_person を使用し、それを新しい PHP オブジェクトに逆シリアル化できます。

$unserialized_person = unserialize($serialized_person);

var_dump($unserialized_person) 関数を使用できます。逆シリアル化後に取得されたオブジェクトは正しいです。

出力結果は次のとおりです:

object(stdClass)#2 (3) {
  ["name"]=>
  string(3) "Tom"
  ["age"]=>
  int(30)
  ["gender"]=>
  string(4) "male"
}

逆シリアル化が成功し、新しい stdClass オブジェクト $unserialized_person が取得されました。その属性は $person とまったく同じです。

  1. 配列とオブジェクトのシリアル化

上記の例では、stdClass オブジェクトに対してシリアル化とシリアル化解除がどのように使用されるかを示しました。ただし、他の PHP 配列やオブジェクトも処理できます。

たとえば、複数の学生情報を含む配列があるとします:

$students = array(
  array("name" => "Tom", "age" => 20, "gender" => "male"),
  array("name" => "Alice", "age" => 22, "gender" => "female"),
  array("name" => "Bob", "age" => 21, "gender" => "male"),
);

$students を文字列にシリアル化できます:

$serialized_students = serialize($students);

そして、unserialize 関数を渡します。これは逆シリアル化されます。新しい配列に:

$unserialized_students = unserialize($serialized_students);

var_dump($unserialized_students) 関数を使用して、逆シリアル化後に取得された配列が一貫しているかどうかを確認することもできます。

  1. #シリアル化時の注意事項
シリアル化およびアンシリアル化を使用する場合は、次の点に注意する必要があります。

( 1) パブリック プロパティを持つオブジェクトのみをシリアル化できます。

(2) シリアル化された文字列は、PHP のバージョンとオペレーティング システムに関連しています。 PHP のバージョンが異なると、シリアル化結果も異なる場合があります。

(3) シリアル化の結果にはオブジェクトのすべてのプロパティとメソッドが含まれるため、プライベート プロパティとメソッドの保護に注意する必要があります。

  1. 概要
serialize と unserialize は、PHP の 2 つの非常に重要な関数で、PHP オブジェクトを文字列に変換し、変更を逆シリアル化できます。これらは、Web 開発においてデータを便利に保存および送信するのに役立ちます。これを使用する場合は、オブジェクトのプロパティとアクセス権、および異なる PHP バージョン間のシリアル化の違いに注意する必要があります。

以上がPHP でのシリアライズとアンシリアライズの使用法の簡単な分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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