(PHP 4, PHP 5)
unserialize — 저장 표현에서 PHP 값을 작성
일렬화된 문자열.
변수가 객체로 unserialize되고, 성공적으로 객체로 재구성되면, PHP는 자동적으로 __wakeup() 멤버 함수를 호출합니다. (존재한다면)
Note: unserialize_callback_func 지시어
일렬화를 푸는 도중에 미정의된 클래스가 생성될 때 호출할 콜백 함수를 설정할 수 있습니다. (미완성된 object "__PHP_Incomplete_Class"를 방지합니다) php.ini, ini_set(), .htaccess 등을 이용해서 'unserialize_callback_func'를 정의하십시오. 미정의 클래스가 생성되어야 할 때마다 호출됩니다. 이 기능을 끄려면 설정을 비워두면 됩니다.
변환된 값이 반환되며, boolean, integer, float, string, array, object가 될 수 있습니다.
주어진 문자열에서 일렬화를 풀 수 없을 때는 FALSE를 반환하고 E_NOTICE가 발생합니다.
버전 | 설명 |
---|---|
4.2.0 | unserialize_callback_func 지시어를 사용할 수 있게 되었습니다. |
4.0.0 | 객체를 일렬화 할 때, 메쏘드를 잃어버리지 않습니다. 자세한 정보는 객체 일렬화를 참고하십시오. |
Example #1 unserialize() 예제
<?php
// 여기서는, 데이터베이스에서 가져온 문자열로부터 $session_data
// 배열에 세션 데이터를 읽어들일 때 unserialize()를 사용합니다.
// 이 예제는 serialize()에 설명된 예제를 보완합니다.
$conn = odbc_connect("webdb", "php", "chicken");
$stmt = odbc_prepare($conn, "SELECT data FROM sessions WHERE id = ?");
$sqldata = array($_SERVER['PHP_AUTH_USER']);
if (!odbc_execute($stmt, &$sqldata) || !odbc_fetch_into($stmt, &$tmp)) {
// excute나 fetch가 실패하면, 빈 배열로 초기화합니다.
$session_data = array();
} else {
// 여기서는 일렬화된 데이터를 $tmp[0]에 가집니다.
$session_data = unserialize($tmp[0]);
if (!is_array($session_data)) {
// 무언가 잘못되면, 빈 배열로 초기화합니다.
$session_data = array();
}
}
?>
Example #2 unserialize_callback_func 예제
<?php
$serialized_object='O:1:"a":1:{s:5:"value";s:3:"100";}';
// unserialize_callback_func 지시어는 PHP 4.2.0부터 사용할 수 있습니다.
ini_set('unserialize_callback_func', 'mycallback'); // 콜백 함수를 설정
function mycallback($classname)
{
// 단지 클래스를 정의하는 파일을 포함합니다.
// 어떤 클래스 정의가 필요한가는 $classname에서 얻을 수 있습니다.
}
?>
오류가 발생했을 때와 일렬화된 FALSE 값을 복구했을 때, 둘 다 FALSE를 반환합니다. str 를 serialize(false)와 비교하거나, E_NOTICE 발생을 확인해서 이러한 특별한 경우를 처리할 수 있습니다.