/*
-------------------------------- ----------------------------------
| = 이 글은 Haohappy<
| = 해당 장의 클래스 및 개체에 대한 참고 사항
| = 개인적인 경험을 바탕으로 작성되었습니다.
| = 불필요한 문제를 피하기 위해 재인쇄하지 마십시오. 감사합니다
| 비판과 수정을 환영하며, 모든 PHP 애호가들과 함께 발전하기를 바랍니다!
| = PHP5 연구 센터: http://blog.csdn.net/haohappy2004
--------- ----- ------------------- ----- ---------------
*/
섹션 13 - 객체 직렬화
직렬화는 객체를 포함한 변수를 연속 바이트 데이터로 변환할 수 있습니다. 직렬화된 변수를 파일에 저장하거나 네트워크를 통해 전송할 수 있습니다. 그런 다음 PHP는 클래스 개체의 속성과 메서드를 역직렬화하기 전에 정의한 클래스를 성공적으로 역직렬화할 수 있습니다. 이러한 목적을 위해 PHP는 자동으로 __sleep 및 __wakeup 메서드를 찾습니다.
객체가 직렬화되면 PHP는 개체를 역직렬화한 후 __sleep 메서드를 호출합니다. PHP는 __wakeup 메소드를 호출합니다. 두 메소드 모두 직렬화해야 하는 객체가 포함된 배열을 반환해야 합니다. PHP는 __sleep 메소드가 없는 경우 이를 삭제합니다.
예제 6.16에서는 __sleep 및 __wakeup 메서드를 사용하여 개체에 남아 있는 의도하지 않은 임시 속성을 보여줍니다. __sleep 메서드는 id 속성이 개체에 포함되지 않도록 합니다. User 개체를 역직렬화할 때 __wakeup 메서드는 id 특성의 새 값을 설정합니다. 이 예제는 실제 개발에서 리소스(예: 이미지 또는 데이터 스트림)를 포함하는 개체를 찾을 수 있습니다.
목록 6.16 객체 직렬화
코드 복사 코드는 다음과 같습니다.
class User
{
public $name
public $id; {
/ /사용자에게 고유 ID 부여
$this->id = uniqid(); function __sleep()
{ //직렬화하지 않음- >id는 id를 직렬화하지 않습니다. . $ this->id =
} }
}
//객체 생성 객체 생성
$u = new User;
$u->name = "Leon"
//직렬화 직렬화 id 속성은 직렬화되지 않습니다. id 값이 삭제됨
$s = serialize($u);
//직렬화 취소 id가 재할당됨
$u2 = unserialize($s)
//$u $u2의 ID가 다릅니다. $u와 $u2의 ID가 다릅니다.
print_r($u)
print_r($ u2);
위에서는 중국공산당 제18기 3중전원회의 학습경험을 소개하였습니다. 13항 - 객체순서에는 제18기 3차 전원회의 학습경험 내용이 포함되어 있기를 바랍니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 됩니다.