利用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)将对 ...
随机推荐
- 2016CCPC东北地区大学生程序设计竞赛 1008 HDU5929
链接http://acm.hdu.edu.cn/showproblem.php?pid=5929 题意:给你一种数据结构以及操作,和一种位运算,最后询问:从'栈'顶到低的运算顺序结果是多少 解法:根据 ...
- AJAX和jQuery Ajax总结
AJAX全称为“Asynchronous JavaScript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用,改善用户体验,实现无刷新效果的技术. 使用AJAX的优 ...
- 【项目管理和构建】十分钟教程,eclipse配置maven + 创建maven项目(三)
[项目管理和构建]十分钟教程,eclipse配置maven + 创建maven项目(三) 上篇博文中我们介绍了maven下载.安装和配置(二),这篇博文我们配置一下eclipse,将它和maven结合 ...
- centos6.6下编译安装mysql5.6之后启动失败:Starting MySQL... ERROR! The server quit without updating PID file (/var/lib/mysql/localhost.localdomain.pid).
今天在编译安装mysql5.6时候出现Starting MySQL... ERROR! The server quit without updating PID file (/var/lib/mysq ...
- static变量在php和java中的生命周期
1. java的static变量伴随着java虚拟机的退出而消亡,java虚拟机运行期间,static变量一直存在 2. php的static变量只针对一次请求(一次php文件的执行),php文件执行 ...
- git :设置 object-c 的忽略文件
使用 git 命令行来进行版本控制的时候, 需要设置忽略文件. 这里能找到所有语言的忽略文件的内容:https://github.com/github/gitignore OBJECT的忽略文件内容: ...
- iOS案例:读取指定目录下的文件列表
// // main.m // 读取指定目录下的文件列表 // // Created by Apple on 15/11/24. // Copyright © 2015年 Apple. All rig ...
- sqlserver前面加N解释
From : http://lzde360.blog.163.com/blog/static/6780720820111026112033917/ 加上 N 代表存入数据库时以 Unicode 格式存 ...
- 图--DFS求连通块
The GeoSurvComp geologic survey company is responsible for detecting u ...
- 利用tomcat配置网站
1: 首先将tomcat考到C盘: 2:建立我们存放web应用的目录,我建立在D:\myWeb ,然后将自己的web应用考到myWeb目录下: 3:wApp的目录结构为: WEB-INF: 结构: ...