对象序列化学习笔记
2016-08-05 00:00
183 查看
需要掌握的函数
unserialize serialize
对象序列化的好处?
由于php对象是用数组来模拟的,因此我们把对象转为数组,就能看到这个对象所拥有的属性了。
class a{
private $name;
private $age;
protected function getName()
{
return $this->name;
}
}
class b extends a{
}
$b = new b;
print_r((array)$b);exit;
什么叫序列化?
所谓序列化,就是把保存在内存中的各种对象状态(属性)保存起来,并且在需要时可以还原出来。
注意:在序列化和反序列化时都需要包含类的对象的定义,不然会出现反序列化对象时,找不到该对象类的定义的错误
ect(__PHP_Incomplete_Class)#1 (3) { ["__PHP_Incomplete_Class_Name"]=> string(1) "b" ["name":"a":private]=> NULL ["age":"a":private]=> NULL } NULL
php手册上面的代码实例
<?php
// classa.inc:
class A {
public $one = 1;
public function show_one() {
echo $this->one;
}
}
// page1.php:
include("classa.inc");
$a = new A;
$s = serialize($a);
// 把变量$s保存起来以便文件page2.php能够读到
file_put_contents('store', $s);
// page2.php:
// 要正确了解序列化,必须包含下面一个文件
include("classa.inc");
$s = file_get_contents('store');
$a = unserialize($s);
// 现在可以使用对象$a里面的函数 show_one()
$a->show_one();
?>
序列化,保存的对象数据都是包含改变过的属性的。也就是序列化的对象是保存特有属性值的,保存方法的方法是一致的
object(a)#1 (2) { ["name":"a":private]=> int(10) ["age":"a":private]=> NULL } NULL
对象序列化后,存储的只是对象的属性。类是由属性和方法组成的,而对象则是属性的结合,由同一个类生成的不同对象,拥有各自不同的属性,但共享了类的代码空间中方法区域的代码
unserialize serialize
对象序列化的好处?
由于php对象是用数组来模拟的,因此我们把对象转为数组,就能看到这个对象所拥有的属性了。
class a{
private $name;
private $age;
protected function getName()
{
return $this->name;
}
}
class b extends a{
}
$b = new b;
print_r((array)$b);exit;
什么叫序列化?
所谓序列化,就是把保存在内存中的各种对象状态(属性)保存起来,并且在需要时可以还原出来。
注意:在序列化和反序列化时都需要包含类的对象的定义,不然会出现反序列化对象时,找不到该对象类的定义的错误
ect(__PHP_Incomplete_Class)#1 (3) { ["__PHP_Incomplete_Class_Name"]=> string(1) "b" ["name":"a":private]=> NULL ["age":"a":private]=> NULL } NULL
php手册上面的代码实例
<?php
// classa.inc:
class A {
public $one = 1;
public function show_one() {
echo $this->one;
}
}
// page1.php:
include("classa.inc");
$a = new A;
$s = serialize($a);
// 把变量$s保存起来以便文件page2.php能够读到
file_put_contents('store', $s);
// page2.php:
// 要正确了解序列化,必须包含下面一个文件
include("classa.inc");
$s = file_get_contents('store');
$a = unserialize($s);
// 现在可以使用对象$a里面的函数 show_one()
$a->show_one();
?>
序列化,保存的对象数据都是包含改变过的属性的。也就是序列化的对象是保存特有属性值的,保存方法的方法是一致的
object(a)#1 (2) { ["name":"a":private]=> int(10) ["age":"a":private]=> NULL } NULL
对象序列化后,存储的只是对象的属性。类是由属性和方法组成的,而对象则是属性的结合,由同一个类生成的不同对象,拥有各自不同的属性,但共享了类的代码空间中方法区域的代码
相关文章推荐
- [零散篇]Java学习笔记---Java的对象序列化以及文件IO处理
- java对象序列化学习笔记[转]
- 【Java学习笔记】对象的序列化和反序列化
- 【小白笔记】PHP学习之路 (21) --对象 魔术方法、变量 序列化
- WCF学习笔记——对象序列化
- java对象序列化学习笔记
- Java与Flex学习笔记(6)----Java对象与ActionScript对象之间的序列化
- python 学习笔记(12)序列化python 对象
- 关于LUA程序设计对象序列化学习笔记
- 黑马程序员 C#学习笔记⑨ 序列化对象
- java对象序列化学习笔记
- java对象序列化学习笔记
- java对象序列化学习笔记
- 【js学习笔记038】--序列化对象
- java对象序列化学习笔记
- Java对象序列化学习笔记
- java对象序列化学习笔记(z)
- Java对象序列化学习笔记
- java 学习笔记11之对象序列化
- Java学习笔记——IO操作之对象序列化及反序列化