var exporter
v7.2.0
VarExporter コンポーネントは、オブジェクトの内部状態を処理するためのさまざまなツールを提供します。
VarExporter::export()
と、シリアル化可能な PHP データ構造をプレーンな PHP コードにエクスポートできます。その際、PHP のシリアル化メカニズム ( __wakeup
、 __sleep
、 Serializable
、 __serialize
、 __unserialize
) に関連付けられたすべてのセマンティクスが保持されます。Instantiator::instantiate()
コンストラクターや他のメソッドを呼び出すことなく、オブジェクトを作成し、そのプロパティを設定します。Hydrator::hydrate()
既存のオブジェクトのプロパティを設定できます。Lazy*Trait
クラスを遅延読み込みゴーストまたは仮想プロキシとして動作させることができます。 serialize()
または igbinaryではなくVarExporter::export()
を使用する理由はパフォーマンスです。OPcache のおかげで、結果のコードはunserialize()
またはigbinary_unserialize()
を使用するよりも大幅に高速になり、メモリ効率が高くなります。
var_export()
とは異なり、これはシリアル化可能な PHP 値に対して機能します。
また、 var_export()
/ serialize()
に対していくつかの改善が加えられています。
r
またはn
を台無しにすることなく、出力を再インデントできます。PHP_Incomplete_Class
オブジェクトにシリアル化されずにClassNotFoundException
をスローします。SplObjectStorage
、 ArrayObject
、またはArrayIterator
インスタンスを含む参照は保持されます。Reflection*
、 IteratorIterator
、およびRecursiveIteratorIterator
クラスは、シリアル化時に例外をスローします (シリアル化されていないバージョンは壊れています。https://bugs.php.net/76737 を参照)。 Instantiator::instantiate($class)
コンストラクターや他のメソッドを呼び出さずに、指定されたクラスのオブジェクトを作成します。
Hydrator::hydrate()
プライベートおよび保護されたオブジェクトを含む既存のオブジェクトのプロパティを設定します。例えば: