作者:amroc_394 | 来源:互联网 | 2013-09-13 09:12
对象序列化,就是将对象类型的数据,按照某种规则转换成可以被保存的字符串类型的数据,可以利用函数serialize($object)达到效果,返回值是转化后的字符串
对象的保存 与 还原
其他类型的数据的保存,例如:如何保存一个字符串呢?
那么如何保存一个 对象类型的数据呢?
如果需要将对象保存起来,应该将对象 序列化
对象序列化,就是将对象类型的数据,按照某种规则 转换成可以被保存的 字符串类型的数据,可以利用函数serialize($object)达到效果,返回值是转化后的字符串。
对象的序列化:对象--->字符串;
如何获得?
文件中保存的字符串,我们现在获得是字符串,怎么通过字符串获得相应的对象呢?这个过程刚好与序列化相反, 称之为 反序列化
对象的反序列化 字符串 –>对象
Unserialize();
如果在反序列化时没有提供 对象所属的类,会转化成一个对象 ,但是
注意:序列化 和 反序列化 不单单适用于 对象数据类型,可以用于其他的所有的数据类型。 在保存数据时,如果不希望丢失数据的数据类型 都可以先对数据进行序列化后再保存。
注意: 在序列化时,资源型数据 将不能完全序列化。如果一个对象的属性是资源,那么这个资源将在 对象被反序列化时 丢失。
如何在反序列化时,将某些资源重新初始化?
在反序列化时,构造方法是不会执行的。有一个专门在 反序列化时执行的魔术方法:
__wakeup()
既然 资源类型的数据需要重新初始化,说明这个数据 根本不需要在序列化给保存起来,于此同时 还有一个 在序列化时执行的 魔术方法,用来清理哪些不需要被保存的数据(属性)
#p#对象用到的操作符#e#
对象用到的操作符
Instanceof 判断一个对象 是否是某个类的实例。
如果一个对象是子类的实例,同时 也是父类的实例
对象所涉及的常用函数:
Class_exists(); 类是否存在:
Interface_exists();检查接口是否存在。
Method_exists();检查方法是否存在
Get_glass()返回对象的类:
Get_parent_class();//返回父类名
对象属性的遍历操作:
就像数组一样操作即可,同样受访问权限控制
如果在类内怎么遍历:
注意:__autoload(); 凡是用到类,但是类没有被载入 ,都会自动调用__autoload()函数。