简简单单PHP对象序列化学习
PHP还是比较常用的,于是我研究了一下PHP对象序列化,在这里拿出来和大家分享一下,希望对大家有用。PHP对象序列化也是一个比较普遍的功能,能够把一个对象进行串行化以后变成一个字符串,能够保存或者传输。我们先看一个例子:
- classTestClass
- {
- var$a;
- var$b;
- functionTestClass()
- {
- $this->a=Thisisa;
- $this->b=Thisisb;
- }
- functiongetA()
- {
- return$this->a;
- }
- functiongetB()
- {
- return$this->b;
- }
- }
- $obj=newTestClass;
- $str=serialize($obj);
- echo$str;
输出结果:
- O:9:TestClass:2:{s:1:a;s:9:Thisisa;s:1:b;s:9:Thisisb;}
我们来分析一个对象串行化之后的字符串。
- O:9:TestClass:2:
- {
- s:1:a;s:9:Thisisa;
- s:1:b;s:9:Thisisb;
- }
要能够unserialize()一个对象,需要定义该对象的类。也就是,如果序列化了page1.php中类A的对象$a,将得到一个指向类A的字符串并包含有所有$a中变量的值。如果要在page2.php中将其解序列化,重建类A的对象$a,则page2.php中必须要出现类A的定义。这可以例如这样实现,将类A的定义放在一个包含文件中,并在page1.php和page2.php都包含此文件。
- <?php
- //classa.inc:
- classA
- {
- var$one=1;
- functionshow_one()
- {
- echo$this->one;
- }
- }
- //page1.php:
- include(classa.inc);
- $a=newA;
- $s=serialize($a);
- //将$s存放在某处使page2.php能够找到
- $fp=fopen(store,w);
- fputs($fp,$s);
- fclose($fp);
- //page2.php:
- //为了正常解序列化需要这一行
- include(classa.inc);
- $s=implode(,@file(store));
- $a=unserialize($s);
- //现在可以用$a对象的show_one()函数了
- $a->show_one();
- ?>
永久地址:http://www.phprm.com/frame/php1003478.html
转载随意~请带上教程地址吧^^
- 上一篇: 浅析PHP递归函数返回值使用
- 下一篇: 轻松学习PHP配置文件