微信扫一扫打赏支持

php中类的持久化如何实现

php中类的持久化如何实现

一、总结

一句话总结:PHP持久化通过serialize()  和   unserialize() 这两个函数来实现的。

 

1、持久化之后的对象保存到哪里?

将复杂的数组之类的数组转换成字符串形式持久保存到数据库或文件或session中了.

 

2、为什么Resource类型不支持序列化?

感觉应该是因为resource类型是调用外部资源的原因

这完全是PHP中的Resource类型中指针的缘故

 

 

 

二、php中类的持久化如何实现

持久化定义:

通过将应用程序对象转化成一系列字节流(称  对象序列化),以适应网络传输和保存。

被序列化的对象还可以被重新装配,能够换成原来的形式。

这即意味着,改机制能自动补偿操作系统减的差异,比如在windows上的数据对象被序列化之后,可以通过网络传输到一台Linux系统,准确无误地实现重新装配。

“持久化”可以使应用程序对象不受应用程序运行时间的限制——可以讲一个对象序列化,然后保存到磁盘上,在再次需要使用時进行装配,从而圆满实现一种“持久”效果。

 

 

PHP持久化通过serialize()  和   unserialize() 这两个函数来实现的。 

在PHP中,几乎任何类型(Integer 、Boolean、Float、Array、Object)的变量都可以被序列化。

仅仅只有Resource类型不支持序列化,这完全是PHP中的Resource类型中指针的缘故。

而String类型,由于它本身就是字节流,所有根本没有序列化的必要。

 

其实象ASP这样的开发环境也隐藏这种特性,只不过它是通过, 在session 或 Application 对象中保存应用程序对象,这也是一种持久化的表现,不过ASP并没有提供这一特性的显式接口。

 

三、如何用php实现持久化处理

你是指数据持久化还是运行持久化?如果是数据持久化,可以使用serialize()和unserialize()来处理.

试一试:

1
2
3
4
5
6
7
8
<?php
    $str='';
    $array=array('php','数据','持久化');
    $str=serialize($array);//可以将数组$array序列化成字符串并赋值给字符串变量$str
    echo $str;//将输出一串序列化编码后的字符串
    $array=unserialize($str);//可以将之前序列化后的字符串反解析成数组给$array变量.
    print_r($array);
?>

 使用上面的方法可以将复杂的数组之类的数组转换成字符串形式持久保存到数据库或文件或session中了.

 

 

 

 

 

 

 

 
posted @ 2018-07-29 18:23  范仁义  阅读(843)  评论(0编辑  收藏  举报