PHP 객체의 직렬화 및 역직렬화에 대한 자세한 설명

WBOY
풀어 주다: 2016-07-29 09:05:13
원래의
876명이 탐색했습니다.

직렬화는 언제 사용하나요?

네트워크를 통해 객체를 전송하고 데이터베이스에 파일을 저장할 때

오늘은 4가지 기능을 언급하겠습니다

모든 직렬화

1.serialize(객체 이름) 지정된 클래스 객체를 직렬화합니다. $str=serialize($per) //객체별로 직렬화하고 결과를 $str에 반환합니다
2 .unserialize(직렬화 후 반환 값) 반환 결과는 객체입니다. $per=unserialize($str);

부분 직렬화

3 .__sleep()은 객체의 일부 속성을 직렬화합니다.

4.__wakeup()은 역직렬화 시 객체 내용을 초기화(실제로 수정)합니다

아마도 처음 두 가지 사용 방법을 이미 소개했을 것입니다. 계속해서 간단히 소개하겠습니다. __sleep() 및 __wakeup() 사용

1. 객체의 일부 속성만 직렬화하려면 __sleep() 함수를 사용할 수 있습니다

Add

function__sleep()//只序列化类中的name和age成员
{
$arr=new array('name','age'); name和age必须是类中的属性 可以根据自己的实际需要增加
Return arr;
}
로그인 후 복사

2. 클래스를 직렬화하면, 역직렬화시 객체별 name 속성값이 "Jiang Tong" 으로 되어 있는데, "Zhang San" 으로 바꾸고 싶다면 어떻게 해야 하나요?

function __wakeup()
{
This->name="张三";
}
로그인 후 복사

객체 PHP 직렬화에 대한 자세한 소개

PHP 직렬화가 객체를 포함한 변수를 연속 바이트 데이터로 변환할 수 있다는 것을 알고 계십니까? 직렬화된 변수를 파일에 저장하거나 네트워크를 통해 전송한 다음 다시 원래 데이터로 역직렬화할 수 있습니다. 이 기사에서는 PHP 직렬화에 대해 자세히 소개합니다. PHP는 개체를 역직렬화하기 전에 정의한 클래스의 속성과 메서드를 성공적으로 저장할 수 있습니다. 때로는 개체를 역직렬화한 후 즉시 실행해야 할 수도 있습니다. 이러한 목적을 위해 PHP는 자동으로 __sleep 및 __wakeup 메서드를 찾습니다.

PHP에서 개체를 직렬화하면 PHP는 __sleep 메서드를 호출합니다(존재하는 경우). 개체를 역직렬화한 후 PHP는 __wakeup 메서드를 호출합니다. 두 메서드 모두 허용되지 않습니다. 직렬화할 속성이 포함된 배열입니다. PHP는 다른 속성의 값을 삭제합니다. __sleep 메소드가 없으면 PHP는 모든 속성을 저장합니다. 예제 1에서는 __sleep 및 __wakeup 메서드를 사용하여 개체를 직렬화하는 방법을 보여줍니다. Id 특성은 개체에 유지되지 않는 임시 특성입니다. __sleep 메서드는 id 특성이 직렬화된 개체에 포함되지 않도록 보장합니다. 반대인 경우 User 개체를 직렬화하기 위해 __wakeup 메서드는 id 속성에 대한 새 값을 설정합니다. 이 예제는 실제 개발에서 리소스(예: 이미지 또는 데이터 스트림)가 포함된 개체에 필요하다는 것을 알 수 있습니다. 이러한 방법.

Listing1 객체 직렬화

class User 
{ 
public $name; 
public $id; 
function __construct() 
{ 
//give user a unique ID 赋予一个不同的ID 
$this->id = uniqid(); 
} 
function __sleep() 
{ 
//do not serialize this->id 不串行化id 
return(array("name")); 
} 
function __wakeup() 
{ 
//give user a unique ID 
$this->id = uniqid(); 
} 
} 
//create object 建立一个对象 
$u = new User; 
$u->name = "Leon"; 
//serialize it 串行化 注意不串行化id属性,id的值被抛弃 
$s = serialize($u); 
//unserialize it 反串行化 id被重新赋值 
$u2 = unserialize($s); 
//$u and $u2 have different IDs $u和$u2有不同的ID 
print_r($u); 
print_r($u2); 
?> 
로그인 후 복사

PHP 객체의 직렬화 및 역직렬화에 대한 관련 지식을 소개하는 곳입니다. 모든 사람.

이상으로 PHP 객체의 직렬화와 역직렬화에 대해 내용적인 측면을 포함하여 자세히 소개하였습니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되었으면 좋겠습니다.

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿