직렬화는 변수를 저장하거나 전송할 수 있는 문자열로 변환하는 프로세스입니다. 역직렬화는 사용하기에 적합한 시점에 이 문자열을 원래 변수로 변환하는 것입니다. 이 두 프로세스가 결합되어 데이터를 쉽게 저장하고 전송하므로 프로그램의 유지 관리가 더욱 쉬워집니다. PHP의
직렬화 및 역직렬화는 각각 serialize() 및 unserialize() 함수를 통해 수행할 수 있습니다.
string serialize ( mixed value )
serialize()는 값을 나타내는 바이트 스트림을 포함하고 어디에나 저장할 수 있는 문자열을 반환합니다. (추천 학습: PHP 프로그래밍 초보부터 마스터까지)
PHP 값의 유형과 구조를 잃지 않고 저장하거나 전송하는 데 도움이 됩니다.
직렬화된 문자열을 다시 PHP 값으로 변경하려면 unserialize()를 사용할 수 있습니다. serialize()는 리소스를 제외한 모든 유형을 처리할 수 있습니다. 자신에 대한 참조가 포함된 배열을 serialize()할 수도 있습니다. 직렬화()하는 배열/객체의 참조도 저장됩니다.
객체를 직렬화할 때 PHP는 시퀀스 작업 전에 객체의 멤버 함수 __sleep()을 호출하려고 시도합니다. 이를 통해 객체가 직렬화되기 전에 모든 정리 작업을 수행할 수 있습니다. 마찬가지로, unserialize()를 사용하여 객체를 복원하면 __wakeup() 멤버 함수가 호출됩니다.
참고: PHP 3에서는 객체 속성이 직렬화되지만 메서드는 손실됩니다. PHP 4는 이러한 제한을 깨고 속성과 메서드를 모두 저장할 수 있습니다. 자세한 내용은 클래스 및 개체의 직렬화된 개체 섹션을 참조하세요.
serialize() 예제
<?php // $session_data 是包含了当前用户 session 信息的多维数组。 // 我们使用 serialize() 在请求结束之前将其存储到数据库中。 $conn = odbc_connect ("webdb", "php", "chicken"); $stmt = odbc_prepare ($conn, "UPDATE sessions SET data = ? WHERE id = ?"); $sqldata = array (serialize($session_data), $PHP_AUTH_USER); if (!odbc_execute ($stmt, &$sqldata)) { $stmt = odbc_prepare($conn, "INSERT INTO sessions (id, data) VALUES(?, ?)"); if (!odbc_execute($stmt, &$sqldata)) { /* 出错 */ } } ?>
위 내용은 PHP 직렬화는 무엇을 의미합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!