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() 비공개 및 보호된 개체를 포함하여 기존 개체의 속성을 설정합니다. 예를 들어: