zoukankan      html  css  js  c++  java
  • 利用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());
  • 相关阅读:
    react 实现路由按需加载
    vue-router 与 react-router 设计理念上的区别
    create-react-app 知识点
    ElementUI(vue UI库)、iView(vue UI库)、ant design(react UI库)中组件的区别
    create-react-app 搭建的项目中,让 antd 通过侧边栏导航 Menu 的 Menu.Item 控制 Content 部分的变化
    react-router v4.0 知识点
    prop-types:该第三方库对组件的props中的变量进行类型检测
    002_mtr_a network diagnostic tool
    006_netstat中state详解
    003_监测域名证书过期时间
  • 原文地址:https://www.cnblogs.com/cocoajin/p/5810248.html
Copyright © 2011-2022 走看看