PHP无数据库读写配置文件[php源码]

(゜-゜)つロ 干杯~

做一个动态网页,一般都会有各种后台配置。如果只是少量的配置数据,单独弄个数据库来进行存储就显得有些“浪费”了。

下面分享一个自用的无数据库配置文件增删查改模块,可以很方便地存储读取数据。

有需要的就拿去用吧。

食用方法

新建一个 PHP 文件,命名为 Config.class.php,然后按照注释中的内容来使用就行~

  1. <?php    
  2.      
  3.     
  4. /**  
  5.  * PHP 无数据库配置文件增删查改模块  
  6.  * !注:本模块未对高并发进行优化兼容,如果数据量或并发过大,还是用数据库比较好 :)  
  7.  *   
  8.  * 使用方法:  
  9.  *   
  10.  * 一、引用本模块  
  11.  *   
  12.  *  require_once 'Config.class.php';  
  13.  *   
  14.  *   
  15.  * 二、初始化  
  16.  *   
  17.  *  $C = new Config('配置文件名');  // * 如果是在二级目录下,请确保该目录存在  
  18.  *   
  19.  *   
  20.  * 三、内置方法  
  21.  *   
  22.  *  - 存储(如果已存在则是修改)单条数据  
  23.  *   
  24.  *      $C->set('sitename', '孟坤博客');  
  25.  *   
  26.  *   
  27.  *  - 存储(如果已存在则是修改)一个数组  
  28.  *        
  29.  *      $C->set('user', array('name'=>'peter', 'age'=>12));  
  30.  *   
  31.  *   
  32.  *  - 读取一条数据  
  33.  *   
  34.  *      $C->get('user', '默认值');  
  35.  *   
  36.  *   
  37.  *  - 删除一条数据  
  38.  *   
  39.  *      $C->delete('user');  
  40.  *   
  41.  *   
  42.  *  - 保存对数据的修改  
  43.  *   
  44.  *      $C->save();     // 保存成功返回 true,否则返回失败原因  
  45.  *   
  46.  *    
  47.  * * 注:为了避免频繁地写文件,以上所有对数据的操作都必须调用一次 $C->save(); 才会真正被保存到配置文件中  
  48.  *       建议将所有的数据操作都执行完后再进行存储操作。  
  49.  *   
  50.  *   
  51.  * * 附:精简写法  
  52.  *   
  53.  *      $C->set('sitename', '孟坤博客')->save();  
  54.  */    
  55.     
  56. define('CONFIG_EXIT', '<?php exit;?>');    
  57. class Config {    
  58.     private $data;    
  59.     private $file;    
  60.         
  61.     /**  
  62.      * 构造函数  
  63.      * @param $file 存储数据文件  
  64.      * @return   
  65.      */    
  66.     function __construct($file) {    
  67.         $file = $file.'.php';    
  68.         $this->file = $file;    
  69.         $this->data= self::read($file);    
  70.     }    
  71.         
  72.     /**  
  73.      * 读取配置文件  
  74.      * @param $file 要读取的数据文件  
  75.      * @return 读取到的全部数据信息  
  76.      */    
  77.     public function read($file) {    
  78.         if(!file_exists($file)) return array();    
  79.             
  80.         $str = file_get_contents($file);    
  81.         $str = substr($strstrlen(CONFIG_EXIT));    
  82.         $data = json_decode($str, true);    
  83.         if (is_null($data)) return array();    
  84.         return $data;    
  85.     }    
  86.         
  87.     /**  
  88.      * 获取指定项的值  
  89.      * @param $key 要获取的项名  
  90.      * @param $default 默认值  
  91.      * @return data  
  92.      */    
  93.     public function get($key = null, $default = '') {    
  94.         if (is_null($key)) return $this->data;  // 取全部数据    
  95.             
  96.         if(isset($this->data[$key])) return $this->data[$key];    
  97.         return $default;    
  98.     }    
  99.         
  100.     /**  
  101.      * 设置指定项的值  
  102.      * @param $key 要设置的项名  
  103.      * @param $value 值  
  104.      * @return null  
  105.      */    
  106.     public function set($key$value) {    
  107.         if(is_string($key)) {   // 更新单条数据    
  108.             $this->data[$key] = $value;    
  109.         } else if(is_array($key)) {   // 更新多条数据                   
  110.             foreach ($this->data as $k => $v) {    
  111.                 if ($v[$key[0]] == $key[1]) {    
  112.                     $this->data[$k][$value[0]] = $value[1];    
  113.                 }    
  114.             }    
  115.         }    
  116.             
  117.         return $this;    
  118.     }    
  119.         
  120.     /**  
  121.      * 删除并清空指定项  
  122.      * @param $key 删除项名  
  123.      * @return null  
  124.      */    
  125.     public function delete($key) {    
  126.         unset($this->data[$key]);    
  127.             
  128.         return $this;    
  129.     }    
  130.         
  131.     /**  
  132.      * 保存配置文件  
  133.      * @param $file 要保存的数据文件  
  134.      * @return true-成功 其它-保存失败原因  
  135.      */    
  136.     public function save() {    
  137.         if(defined('JSON_PRETTY_PRINT')) {    
  138.             $jsonStr = json_encode($this->data, JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT);    
  139.         } else {    
  140.             $jsonStr = json_encode($this->data);    
  141.         }    
  142.             
  143.         // 含有二进制或非utf8字符串对应检测    
  144.         if(is_null($jsonStr)) return '数据文件有误';    
  145.         $buffer = CONFIG_EXIT.$jsonStr;    
  146.             
  147.         $file_strm = fopen($this->file, 'w');    
  148.         if(!$file_strmreturn '写入文件失败,请赋予 '.$file.' 文件写权限!';    
  149.         fwrite($file_strm$buffer);    
  150.         fclose($file_strm);    
  151.         return true;    
  152.     }    
  153. }    
   

如果资源下载失效请到 留言板 留言或者 QQ 联系我。

本站默认解压密码:www.hibbba.com

(゜-゜)つロ 干杯~

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: