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() 메서드를 구현합니다. 내부 클래스가 이러한 요구 사항을 충족하지 않으면 직렬 변환기로 안정적으로 직렬화할 수 없습니다.

인터페이스를 구현하거나 메서드를 노출하지 않고 일부 내부 개체를 직렬화할 수 있는 위의 규칙에 대한 몇 가지 역사적 예외가 있습니다.


기타