var exporter
v7.2.0
VarExporter 구성 요소는 객체의 내부 상태를 처리하는 다양한 도구를 제공합니다.
VarExporter::export()
사용하면 직렬화 가능한 PHP 데이터 구조를 일반 PHP 코드로 내보낼 수 있습니다. 그렇게 하는 동안 PHP의 직렬화 메커니즘( __wakeup
, __sleep
, Serializable
, __serialize
, __unserialize
)과 관련된 모든 의미를 유지합니다.Instantiator::instantiate()
객체를 생성하고 생성자나 다른 메서드를 호출하지 않고 객체의 속성을 설정합니다.Hydrator::hydrate()
기존 객체의 속성을 설정할 수 있습니다.Lazy*Trait
클래스가 지연 로딩 고스트 또는 가상 프록시처럼 동작하도록 만들 수 있습니다. VarExporter::export()
대 serialize()
또는 igbinary를 사용하는 이유는 성능입니다. 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()
비공개 및 보호된 개체를 포함하여 기존 개체의 속성을 설정합니다. 예를 들어: