직렬화는 언제 사용하나요?
네트워크를 통해 객체를 전송하고 데이터베이스에 파일을 저장할 때
오늘은 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 튜토리얼에 관심이 있는 친구들에게 도움이 되었으면 좋겠습니다.