| jybox |
2011-08-06 18:33 |
[LightPHP]PHP持久性键值对应储存类
这个是LightPHP的一部分,当然,你不可能单独使用这个文件,但是大家可以参考一下源码,学习学习- <?php
/* ** --键值对应类 ** 该类提供了一种键值对应的储存机制,用于保存LightPHP的设置信息,也可供用户使用 ** 该类支持数据库和INI文件两种储存方法 */ class Options { var $_conn=NULL; var $_from=NULL; var $_safe=1; function __construct($tcfgFrom="DEFAULT",$from=NULL,$safe=1) { $this->_safe=$safe; global $cfgFrom; $tcfgFrom=strtoupper($tcfgFrom); if($tcfgFrom=="DEFAULT") { $tcfgFrom=$cfgFrom; } if($tcfgFrom=="DB") { $this->_conn=new MySQL(); } if($from==NULL) { global $cfgFromName; $from=$cfgFromName; } $this->_from=$from; } function __get($kname) { if($this->_conn) { $rs=$this->_conn->SQL("SELECT * FROM `{$this->_from}` WHERE `k`='{$kname}'"); if($rs->getNum()) { $rs->read(); return $rs->v; } else { return NULL; } } else { $rs=parse_ini_file(dirname(__FILE__)."/../{$this->_from}"); return str_replace("\\n","\n",$rs[$kname]); } } function __set($kname,$value) { if($this->_conn) { $rs=$this->_conn->SQL("SELECT * FROM `{$this->_from}` WHERE `k`='{$kname}'"); if($rs->getNum()) { $this->_conn->SQL("UPDATE `{$this->_from}` SET `v`='{$value}' WHERE `k`='{$kname}'"); } else { $this->_conn->SQL("INSERT INTO `{$this->_from}` (`k`,`v`) VALUES('{$kname}','{$value}'"); } } else { $rs=parse_ini_file(dirname(__FILE__)."/../{$this->_from}"); $rs[$kname]=$value; foreach($rs as $k => $v) { $out="[config]\n"; $out=$out.$k."=".str_replace("\n","\\n",$v)."\n"; } if($this->_safe) { $out=";<?php /*\n".$out.";*/ ?>\n"; } file_put_contents(dirname(__FILE__)."/../{$this->_from}",$out); } } function debug() { print_r($this); } } ?>
使用该类保存的INI文件:
- ;<?php /*
[config] ui_skin=xgsg ;*/ ?>
|
|