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: