Igbinary igbinary_serialize
(PECL igbinary >= 1.1.1)
igbinary_serialize — 값의 컴팩트하고 저장 가능한 이진 표현을 생성합니다.
설명
igbinary_serialize(mixed $value
): string|false
값의 저장 가능한 표현을 생성합니다.
이것은 유형과 구조를 잃지 않고 PHP 값을 저장하거나 전달하는 데 유용합니다.
직렬화된 문자열을 다시 PHP 값으로 만들기 위해 igbinary_unserialize()를 사용할 수 있습니다.
매개변수
value
- 직렬화할 값입니다. igbinary_serialize()는 리소스 유형과 일부 객체를 제외한 모든 유형을 처리합니다(아래 참고 참조). 자체에 대한 참조를 포함하는 배열도 igbinary_serialize()가 될 수 있습니다. 직렬화되는 배열 또는 개체 내부의 순환 참조도 저장됩니다. 다른 모든 참조는 손실됩니다.
객체를 직렬화할 때 igbinary는 직렬화 전에 __serialize() 또는 __sleep() 멤버 함수를 호출하려고 시도합니다. 이것은 객체가 직렬화되기 전에 마지막 순간 정리 등을 수행할 수 있도록 하기 위한 것입니다. 마찬가지로 igbinary_unserialize()를 사용하여 객체를 복원할 때 __unserialize() 또는 __wakeup() 멤버 함수가 호출됩니다.
메모: 개체의 개인 멤버에는 멤버 이름 앞에 클래스 이름이 추가됩니다. 보호된 구성원은 구성원 이름 앞에 '*'가 추가됩니다. 이러한 추가 값은 양쪽에 null 바이트가 있습니다.
반환 값
어디에나 저장할 수 있는 value
의 바이트 스트림 표현을 포함하는 문자열을 반환합니다.
이것은 모든 바이트 값을 포함할 수 있는 이진 문자열이며 그대로 저장 및 처리해야 합니다. 예를 들어, igbinary_serialize() 출력은 일반적으로 CHAR 또는 TEXT 필드가 아닌 데이터베이스의 BLOB 필드에 저장되어야 합니다.
Examples
예제 #1 igbinary_serialize() 예제
<?php
$ser = igbinary_serialize(['test', 'test']);
echo urlencode($ser), "\n";
var_export(igbinary_unserialize($ser));
?>
위의 예는 다음을 출력합니다.
%00%00%00%02%14%02%06%00%11%04test%06%01%0E%00 array ( 0 => 'test', 1 => 'test', )
메모
많은 내장 PHP 객체는 직렬화할 수 없습니다. 그러나 이 능력을 가진 객체들은 Serializable 인터페이스나 __serialize()/__unserialize() 또는 __sleep()/__wakeup() 메서드를 구현합니다. 내부 클래스가 이러한 요구 사항을 충족하지 않으면 직렬 변환기로 안정적으로 직렬화할 수 없습니다.
인터페이스를 구현하거나 메서드를 노출하지 않고 일부 내부 개체를 직렬화할 수 있는 위의 규칙에 대한 몇 가지 역사적 예외가 있습니다.
기타
- serialize() - 값의 저장 가능한 표현을 생성합니다.
- igbinary_unserialize() - igbinary_serialize의 저장된 표현에서 PHP 값을 생성합니다.
- var_export() - 변수의 구문 분석 가능한 문자열 표현을 출력하거나 반환합니다.
- json_encode() - 값의 JSON 표현을 반환합니다.
- Serializing Objects
- __sleep()
- __wakeup()
- __serialize()
- __unserialize()