php中对象的串行化,php对象串行化
我们大家有知道PHP串行化可以把变量包括对象,转化成连续bytes数据,你可以将串行化后的变量存在一个文件里或在网络上传输,然后再反串行化还原为原来的数据。文章这里就PHP串行化为大家详细的介绍。你在反串行化类的对象之前定义的类,PHP可以成功地存储其对象的属性和方法. 有时你可能需要一个对象在反串行化后立即执行。为了这样的目的,PHP会自动寻找__sleep和__wakeup方法。
当一个对象被PHP串行化,PHP会调用__sleep方法(如果存在的话). 在反串行化一个对象后,PHP 会调用__wakeup方法. 这两个方法都不接受参数. __sleep方法必须返回一个数组,包含需要串行化的属性. PHP会抛弃其它属性的值。如果没有__sleep方法,PHP将保存所有属性。
<?<span>php </span><span>/*</span><span> * * @Authors peng--jun * @Email 1098325951@qq.com * @Date 2016-01-23 14:40:38 * @Link </span><span>http://www.cnblogs.com/xs-yqz/</span><span> * @version $Id$ ========================================== </span><span>*/</span><span> header(</span><span>"</span><span>Content-type: text/html; charset=UTF-8</span><span>"</span><span>); </span><span>class</span><span> Person{ </span><span>private</span><span> $name; </span><span>private</span><span> $sex; </span><span>private</span><span> $age; function __construct($name,$age,$sex){ $</span><span>this</span>->name =<span> $name; $</span><span>this</span>->age =<span> $age; $</span><span>this</span>->sex =<span> $sex; } function say(){ echo </span><span>"</span><span>我的名字:</span><span>"</span>.$<span>this</span>->name.<span>"</span><span>性别为: </span><span>"</span>.$<span>this</span>->sex.<span>"</span><span>年龄为:</span><span>"</span>.$<span>this</span>-><span>age; } <span>//在类中添加此方法,在串行化的时候自动调用并返回数组</span> function __sleep(){ $arr </span>= array(<span>"</span><span>name</span><span>"</span>,<span>"</span><span>age</span><span>"</span>);<span>//</span><span>数组中的成员$name和$age将被串行化,成员$sex则将被忽略。</span> <span>return</span><span>($arr);<span>//使用__sleep()方法的时候必须返回一个数组。</span> } <span> //在反串行化对象时自动调用该方法,没有参数也没有返回值</span> function __wakeup(){ $</span><span>this</span>->age = <span>40</span><span>;<span>//在重新组织对象的时候,为新对象中的$age属性重新赋值</span> } } $person1 </span>= <span>new</span> Person(<span>"</span><span>张三</span><span>"</span>,<span>20</span>,<span>"</span><span>男</span><span>"</span><span>); $person1_string </span>=<span> serialize($person1); echo $person1_string.</span><span>"</span><span><br /></span><span>"</span><span>; </span><span>//</span><span>反串行化对象,并自动调用了__wakeup()方法重新为独享中的age赋值。</span> $person2 =<span> unserialize($person1_string); $person2</span>-><span>say(); </span>?>
输出的结果为:
O:<span>6</span>:<span>"</span><span>Person</span><span>"</span>:<span>2</span>:{s:<span>12</span>:<span>"</span><span>Personname</span><span>"</span>;s:<span>6</span>:<span>"</span><span>张三</span><span>"</span>;s:<span>11</span>:<span>"</span><span>Personage</span><span>"</span>;i:<span>20</span><span>;} 我的名字:张三性别为: 年龄为:</span><span>40</span>
2.将串行化的字符串保存到文件中,从文件中读取字符串,反串性化实例。
header(<span>"</span><span>Content-type: text/html; charset=UTF-8</span><span>"</span><span>); </span><span>class</span><span> Person{ </span><span>private</span><span> $name; </span><span>private</span><span> $sex; </span><span>private</span><span> $age; function __construct($name,$age,$sex){ $</span><span>this</span>->name =<span> $name; $</span><span>this</span>->age =<span> $age; $</span><span>this</span>->sex =<span> $sex; } function say(){ echo </span><span>"</span><span>我的名字:</span><span>"</span>.$<span>this</span>->name.<span>"</span><span>性别为: </span><span>"</span>.$<span>this</span>->sex.<span>"</span><span>年龄为:</span><span>"</span>.$<span>this</span>-><span>age; } } $person1 </span>= <span>new</span> Person(<span>"</span><span>张三</span><span>"</span>,<span>21</span>,<span>"</span><span>男</span><span>"</span><span>); $person1_string </span>=<span> serialize($person1); file_put_contents(</span><span>"</span><span>file.txt</span><span>"</span>, $person1_string);<br /><br />
header(<span>"</span><span>Content-type: text/html; charset=UTF-8</span><span>"</span><span>); </span><span>class</span><span> Person{ </span><span>private</span><span> $name; </span><span>private</span><span> $sex; </span><span>private</span><span> $age; function __construct($name,$age,$sex){ $</span><span>this</span>->name =<span> $name; $</span><span>this</span>->age =<span> $age; $</span><span>this</span>->sex =<span> $sex; } function say(){ echo </span><span>"</span><span>我的名字:</span><span>"</span>.$<span>this</span>->name.<span>"</span><span> 性别为:</span><span>"</span>.$<span>this</span>->sex.<span>"</span><span> 年龄为:</span><span>"</span>.$<span>this</span>-><span>age; } } $person2_string </span>= file_get_contents(<span>"</span><span>file.txt</span><span>"</span><span>); $person2 </span>=<span> unserialize($person2_string);<span>//反串性化重新形成对象$person2.</span> $person2</span>-><span>say(); </span>?>
성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사
<garden> : 정원 재배 - 완전한 돌연변이 가이드
3 몇 주 전ByDDD
<gum> : Bubble Gum Simulator Infinity- 로얄 키를 얻고 사용하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
KB5055612 수정 방법 Windows 10에 설치되지 않습니까?
3 몇 주 전ByDDD
Nordhold : Fusion System, 설명
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
Mandragora : 마녀 트리의 속삭임 - Grappling Hook 잠금 해제 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

드림위버 CS6
시각적 웹 개발 도구

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기

mPDF
mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

Dreamweaver Mac版
시각적 웹 개발 도구

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경