변수처리 serialize

(PHP 4, PHP 5, PHP 7, PHP 8)

serialize — 값의 저장 가능한 표현을 생성합니다.


설명

serialize(mixed $value): string

값의 저장 가능한 표현을 생성합니다.

이것은 유형과 구조를 잃지 않고 PHP 값을 저장하거나 전달하는 데 유용합니다.

직렬화된 문자열을 다시 PHP 값으로 만들려면 unserialize()를 사용하십시오.


매개변수

value
직렬화할 값입니다. serialize()는 리소스 유형과 일부 객체를 제외한 모든 유형을 처리합니다(아래 참고 참조). 자신에 대한 참조를 포함하는 배열을 serialize()할 수도 있습니다. 직렬화하는 배열/객체 내부의 순환 참조도 저장됩니다. 다른 모든 참조는 손실됩니다.

객체를 직렬화할 때 PHP는 직렬화 전에 __serialize() 또는 __sleep() 멤버 함수 호출을 시도합니다. 이것은 객체가 직렬화되기 전에 마지막 순간 정리 등을 수행할 수 있도록 하기 위한 것입니다. 마찬가지로, 객체가 unserialize()를 사용하여 복원되면 __unserialize() 또는 __wakeup() 멤버 함수가 호출됩니다.

메모: 개체의 private 멤버는 멤버 이름 앞에 클래스 이름이 추가됩니다. 보호된 구성원은 구성원 이름 앞에 '*'가 추가됩니다. 이러한 추가 값은 양쪽에 null 바이트가 있습니다.


반환 값

어디에나 저장할 수 있는 value의 바이트 스트림 표현을 포함하는 문자열을 반환합니다.

이것은 널 바이트를 포함할 수 있는 이진 문자열이며 그대로 저장하고 처리해야 합니다. 예를 들어, serialize() 출력은 일반적으로 CHAR 또는 TEXT 필드가 아닌 데이터베이스의 BLOB 필드에 저장되어야 합니다.


Examples

예제 #1 serialize() 예제

                  
<?php
// $session_data contains a multi-dimensional array with session
// information for the current user.  We use serialize() to store
// it in a database at the end of the request.

$conn = odbc_connect("webdb", "php", "chicken");
$stmt = odbc_prepare($conn,
      "UPDATE sessions SET data = ? WHERE id = ?");
$sqldata = array (serialize($session_data), $_SERVER['PHP_AUTH_USER']);
if (!odbc_execute($stmt, $sqldata)) {
    $stmt = odbc_prepare($conn,
     "INSERT INTO sessions (id, data) VALUES(?, ?)");
    if (!odbc_execute($stmt, array_reverse($sqldata))) {
        /* Something went wrong.. */
    }
}
?>
                  
                

메모

메모:

많은 내장 PHP 객체는 직렬화할 수 없습니다. 그러나 이 능력을 가진 객체들은 Serializable 인터페이스나 __serialize()/__unserialize() 또는 __sleep()/__wakeup() 메서드를 구현합니다. 내부 클래스가 이러한 요구 사항을 충족하지 않으면 안정적으로 직렬화할 수 없습니다.

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

경고 serialize()가 객체를 직렬화할 때 최대 호환성을 위해 네임스페이스 클래스의 클래스 이름에 선행 백슬래시가 포함되지 않습니다.


기타