利用php的序列化和反序列化来做简单的数据本地存储
利用php的序列化和反序列化来做简单的数据本地存储
如下程序可以做为一个工具类
/**
* 利用php的序列化和反序列化来做简单的数据本地存储
*/
class objectdb
{ private static $db; //成功返回 objectdb 对象,不需要在外面使用new
//目录需要写文件的权限
public function defaultdb($dbname='./default.db')
{
self::$db = $dbname;
if(file_exists($dbname))
{
return new objectdb();
} $ret=file_put_contents($dbname,serialize(array()));
if ($ret > 0) {
return new objectdb();
}
return false;
} //添加数据key,value 或更新
public function setValueForKey($key,$value)
{
$arrdata = $this->getDBarray();
$arrdata[$key] = $value;
return $this->setDBarray($arrdata);
} //删除指定key的数据
public function removeValueForKey($key)
{
$arrdata = $this->getDBarray();
unset($arr[$key]);
} //获取指定key的数据
public function getValueForKey($key)
{
$arrdata = $this->getDBarray();
return $arrdata[$key];
} //获取所有的数据
public function getAll()
{
$arrdata = $this->getDBarray();
return $arrdata;
} //获取所有的key
public function getAllKey()
{
$arrdata = $this->getDBarray();
return array_keys($arrdata);
} //清空db数据
public function cleardb()
{
$ret=file_put_contents(self::$db,serialize(array()));
return $ret;
} //private get
private function getDBarray()
{
$rdata=file_get_contents(self::$db);
return unserialize($rdata);
} //private set
private function setDBarray($arr)
{
$ret=file_put_contents(self::$db,serialize($arr));
if ($ret > 0) {
return true;
}else
{
return false;
}
} }
测试代码如下
//test
$dbhandle = objectdb::defaultdb();
if (!$dbhandle) {
echo "init failure!";
exit();
} echo "start <br>";
var_dump($dbhandle->getAll()); echo "<br>add 1 <br>";
$dbhandle->setValueForKey("baidu","www.baidu.com");
$dbhandle->setValueForKey("qq","www.qq.com");
$dbhandle->setValueForKey("taobao","www.taobao.com");
var_dump($dbhandle->getAll()); echo "<br>mod 1 <br>";
$dbhandle->setValueForKey("baidu","http://www.baidu.com");
var_dump($dbhandle->getAll()); echo "<br>get 1 <br>";
echo $dbhandle->getValueForKey("baidu"); echo "<br>get 1 <br>";
var_dump($dbhandle->getAllKey()); echo "<br>clear 1 <br>";
$dbhandle->cleardb(); echo "<br>get 1 <br>";
var_dump($dbhandle->getAll());
利用php的序列化和反序列化来做简单的数据本地存储的更多相关文章
- 一起来做chrome扩展《本地存储localStorage》
chrome中的本地存储其实也是用的HTML5中localStorage,唯一区别是chrome扩展有自己的localStorage,它属于这个扩展,而不属于一个域名.得用这一点可以很好的处理扩展自己 ...
- XmlSerializer 对象的Xml序列化和反序列化
http://www.cnblogs.com/yukaizhao/archive/2011/07/22/xml-serialization.html 这篇随笔对应的.Net命名空间是System.Xm ...
- XmlSerializer 对象的Xml序列化和反序列化,XMLROOT别名设置
这篇随笔对应的.Net命名空间是System.Xml.Serialization:文中的示例代码需要引用这个命名空间. 为什么要做序列化和反序列化? .Net程序执行时,对象都驻留在内存中:内存中 ...
- Windows phone 之XML序列化与反序列化
为什么要做序列化和反序列化? 一个回答: 我们都知道对象是不能在网络中直接传输的,不过还有补救的办法.XML(Extensible Markup Language)可扩展标记语言,本身就被设计用来存储 ...
- C#操作Xml:XmlSerializer 对象的Xml序列化和反序列化
这篇随笔对应的.Net命名空间是System.Xml.Serialization:文中的示例代码需要引用这个命名空间. 为什么要做序列化和反序列化? .Net程序执行时,对象都驻留在内存中:内存中的对 ...
- XML的序列化和反序列化 详细介绍
为什么要做序列化和反序列化? 一个回答: 我们都知道对象是不能在网络中直接传输的,不过还有补救的办法.XML(Extensible Markup Language)可扩展标记语言,本身就被设计用来存储 ...
- .net序列化与反序列化——提供多次存储对象集后读取不完全解决方案
||问题: 文本文档读取序列化文件时只能读取第一次序列化对象或对象集,而多次序列化存到同一个文本文件中不能完全读取.最近做一个简单的学生管理系统,涉及到多次将学生对象序列化后追加存储到同一个文档中.在 ...
- FastJson实现复杂对象序列化与反序列化
原文:http://blog.csdn.net/xqhadoop/article/details/62217954 一.认识FastJson 1.优势 fastjson是目前java语言中最快的jso ...
- JAVA中序列化和反序列化中的静态成员问题
关于这个标题的内容是面试笔试中比较常见的考题,大家跟随我的博客一起来学习下这个过程. ? ? JAVA中的序列化和反序列化主要用于: (1)将对象或者异常等写入文件,通过文件交互传输信息: (2)将对 ...
随机推荐
- easyui commbox嵌入一个checkbox的实现
function InitComBoBox(datagrid, combxid, formid, url, valueField, textField,_prompt) { $(combxid).co ...
- EasyUI 自定义窗口工具
默认的窗口有4个工具:collapsible(可折叠),minimizable(最小化),maximizable(最大化) 和closable(关闭),例如,我们定义下列窗口: <div id= ...
- dubbo源码之三——dubbo重构
dubbo版本:2.5.4 转自:http://javatar.iteye.com/blog/1041832
- 【Java】Java创建String时,什么情况放进String Pool?
对Java创建String是否放入String pool作代码性的试验. 参考的优秀文章 JAVA面试题解惑系列(二)——到底创建了几个String对象? public String(String o ...
- Python3基础 print 中使用+号,连接两个字符串
镇场诗:---大梦谁觉,水月中建博客.百千磨难,才知世事无常.---今持佛语,技术无量愿学.愿尽所学,铸一良心博客.------------------------------------------ ...
- SqlSever基础 len函数 返回一个字符串的长度
镇场诗:---大梦谁觉,水月中建博客.百千磨难,才知世事无常.---今持佛语,技术无量愿学.愿尽所学,铸一良心博客.------------------------------------------ ...
- \r与\n有何区别,编码的时候应该如何使用
\r与\n有何区别,编码的时候应该如何使用 区别: \r: 全称:carriage return (carriage是“字车”的意思,打印机上的一个部件) 简称:return 缩写:r ASCII码: ...
- So easy Webservice 5.WSDL 文件说明
WSDL – WebService Description Language – Web服务描述语言 通过XML形式说明服务在什么地方-地址. 通过XML形式说明服务提供什么样的方法 – 如何调用. ...
- 微博传播数量和传播深度的预测--基于pyspark和某个回归算法
8-28决定参加一下这个千万条的数据处理任务,因为场景和自己做过的一个回归分析预测差不多,第一天开始在小规模的数据上做准备工作. 第二次大修改版本 date 20160829 星期一¶ 原始数据处理, ...
- HDU 5430 Reflect(欧拉函数)
题目: http://acm.hdu.edu.cn/showproblem.php?pid=5430 从镜面材质的圆上一点发出一道光线反射NNN次后首次回到起点. 问本质不同的发射的方案数. 输入描述 ...