利用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的序列化和反序列化来做简单的数据本地存储的更多相关文章

  1. 一起来做chrome扩展《本地存储localStorage》

    chrome中的本地存储其实也是用的HTML5中localStorage,唯一区别是chrome扩展有自己的localStorage,它属于这个扩展,而不属于一个域名.得用这一点可以很好的处理扩展自己 ...

  2. XmlSerializer 对象的Xml序列化和反序列化

    http://www.cnblogs.com/yukaizhao/archive/2011/07/22/xml-serialization.html 这篇随笔对应的.Net命名空间是System.Xm ...

  3. XmlSerializer 对象的Xml序列化和反序列化,XMLROOT别名设置

    这篇随笔对应的.Net命名空间是System.Xml.Serialization:文中的示例代码需要引用这个命名空间.   为什么要做序列化和反序列化? .Net程序执行时,对象都驻留在内存中:内存中 ...

  4. Windows phone 之XML序列化与反序列化

    为什么要做序列化和反序列化? 一个回答: 我们都知道对象是不能在网络中直接传输的,不过还有补救的办法.XML(Extensible Markup Language)可扩展标记语言,本身就被设计用来存储 ...

  5. C#操作Xml:XmlSerializer 对象的Xml序列化和反序列化

    这篇随笔对应的.Net命名空间是System.Xml.Serialization:文中的示例代码需要引用这个命名空间. 为什么要做序列化和反序列化? .Net程序执行时,对象都驻留在内存中:内存中的对 ...

  6. XML的序列化和反序列化 详细介绍

    为什么要做序列化和反序列化? 一个回答: 我们都知道对象是不能在网络中直接传输的,不过还有补救的办法.XML(Extensible Markup Language)可扩展标记语言,本身就被设计用来存储 ...

  7. .net序列化与反序列化——提供多次存储对象集后读取不完全解决方案

    ||问题: 文本文档读取序列化文件时只能读取第一次序列化对象或对象集,而多次序列化存到同一个文本文件中不能完全读取.最近做一个简单的学生管理系统,涉及到多次将学生对象序列化后追加存储到同一个文档中.在 ...

  8. FastJson实现复杂对象序列化与反序列化

    原文:http://blog.csdn.net/xqhadoop/article/details/62217954 一.认识FastJson 1.优势 fastjson是目前java语言中最快的jso ...

  9. JAVA中序列化和反序列化中的静态成员问题

    关于这个标题的内容是面试笔试中比较常见的考题,大家跟随我的博客一起来学习下这个过程. ? ? JAVA中的序列化和反序列化主要用于: (1)将对象或者异常等写入文件,通过文件交互传输信息: (2)将对 ...

随机推荐

  1. hdu 1452 Happy 2004 膜拜这推导过程

    Happy 2004 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total ...

  2. 2016-2017 CT S03E05: Codeforces Trainings Season 3 Episode 5 (2016 Stanford Local Programming Contest, Extended) J

    链接:http://codeforces.com/gym/101116 题意:给出n个点,要求一个矩形框将(n/2)+1个点框住,要面积最小 解法:先根据x轴选出i->j之间的点,中间的点(包括 ...

  3. 邮箱性质--全选单选的操作和传值 用属性的name传值

    封装类 using System; using System.Collections.Generic; using System.Web; /// <summary> /// Ha 的摘要 ...

  4. noip2011提高组day1+day2解题报告

    Day1 T1铺地毯https://www.luogu.org/problem/show?pid=1003 [题目分析] 全部读入以后从最后一个往前找,找到一个矩形的范围覆盖了这个点,那这个矩形就是最 ...

  5. 字符串处理函数(strlen wcslen...)

    1.从一个字符串中寻找某个字符最后出现的位置: wcsrchr 2. ANSI      UNICODE     自动 strlen    wcslen      _tcslen strcpy     ...

  6. android MSM8974 上DeviceTree简介

    简介 主要功能是不在代码中硬编码设备信息,而是用专门的文件来描述.整个系统的设备节点会形成一个树,设备节点里可以设置属性.官网在http://www.devicetree.org .入门指南请参考ht ...

  7. Cheatsheet: 2014 09.01 ~ 09.30

    Mobile Testing Mobile: Emulators, Simulators And Remote Debugging iOS 8 and iPhone 6 for Web Develop ...

  8. PowerShell 4 on win7 sp1

    https://www.microsoft.com/en-hk/download/details.aspx?id=40855 文件太多了,按照这个http://stackoverflow.com/qu ...

  9. mysqldump使用方法(MySQL数据库的备份与恢复)

    #mysqldump --help 1.mysqldump的几种常用方法: (1)导出整个数据库(包括数据库中的数据) mysqldump -u username -p dbname > dbn ...

  10. Oracle的数据恢复——Flashback用法汇总

    /* 11g的flashbackup 分好几种,分别用途不一样. A.flashback database 闪回数据库,简单理解就是把数据库闪回到某个以前的时间点, 能恢复到的最早的SCN, 取决与F ...