var exporter
v7.2.0
Komponen VarExporter menyediakan berbagai alat untuk menangani keadaan internal objek:
VarExporter::export()
memungkinkan mengekspor struktur data PHP apa pun yang dapat diserialkan ke kode PHP biasa. Saat melakukannya, ia mempertahankan semua semantik yang terkait dengan mekanisme serialisasi PHP ( __wakeup
, __sleep
, Serializable
, __serialize
, __unserialize
);Instantiator::instantiate()
membuat objek dan menyetel propertinya tanpa memanggil konstruktornya atau metode lainnya;Hydrator::hydrate()
dapat mengatur properti objek yang ada;Lazy*Trait
dapat membuat kelas berperilaku seperti hantu atau proxy virtual yang memuat lambat. Alasan menggunakan VarExporter::export()
vs serialize()
atau igbinary adalah kinerja: berkat OPcache, kode yang dihasilkan jauh lebih cepat dan lebih hemat memori dibandingkan menggunakan unserialize()
atau igbinary_unserialize()
.
Tidak seperti var_export()
, ini berfungsi pada nilai PHP apa pun yang dapat diserialkan.
Ini juga memberikan beberapa perbaikan atas var_export()
/ serialize()
:
r
atau n
pada data;ClassNotFoundException
alih-alih tidak diserialisasikan ke objek PHP_Incomplete_Class
;SplObjectStorage
, ArrayObject
atau ArrayIterator
dipertahankan;Reflection*
, IteratorIterator
dan RecursiveIteratorIterator
mengeluarkan pengecualian ketika sedang diserialisasi (versi tidak serialnya tetap rusak, lihat https://bugs.php.net/76737). Instantiator::instantiate($class)
membuat objek dari kelas tertentu tanpa memanggil konstruktornya atau metode lainnya.
Hydrator::hydrate()
menyetel properti objek yang ada, termasuk properti pribadi dan terlindungi. Misalnya: