商城架构二
index.php: <?php /* 以后所有由用户直接访问到的这些页面 都得先加载init.php */ require('./include/init.php'); $conf = conf::getIns(); var_dump($conf); ?> include/config.inc.php: <?php /* file.config.inc.php 配置文件 */ $_CFG = array(); $_CFG['host'] = '127.0.0.1'; $_CFG['user'] = 'root'; $_CFG['pwd'] = '111111'; ?> include/conf.class.php: <?php /* file conf.class.php 配置文件读取类 */ class conf{ protected static $ins = null; protected $data = array(); final protected function __construct(){ //一次性把配置文件信息读过来赋给$data属性; //这样以后就不再管配置文件了; //再要配置的值时,直接从$data属性找; include(ROOT . 'config.inc.php'); $this->data = $_CFG; } final protected function __clone(){ } public static function getIns(){ if(self::$ins instanceof self){ return self::$ins; }else{ self::$ins = new self(); return self::$ins; } } //用魔术方法,读取data内的信息 public function __get($key){ if(array_key_exists($key,$this->data)){ return $this->data[$key]; }else{ return null; } } //用魔术方法,在运行期间,动态增加,动态增加或改变配置选项 public function __set($key,$value){ $this->data[$key] = $value; } } $conf = conf::getIns(); /* 已经能把配置文件的信息,读取的自身的data属性中存储起来 print_r($conf); */ //var_dump($conf->user);//测试魔术方法__get() 读取选项 /* $conf->template_dir = 'D:/www/smary';//测试__set() 动态的追加选项 echo $conf->template_dir; */ ?> include/init.php: <?php /* file init.php 作用:框架初始化 */ //初始化当前的绝对路径 //换成正斜线是因为win/linux都支持正斜线,而linux不支持反斜线 define('ROOT',str_replace('\\','/',dirname(__FILE__)) . '/'); define('DEBUG',true); require(ROOT . 'db.class.php'); require(ROOT . 'conf.class.php'); //过滤参数,用递归的方式过滤$_GET,$_POST,$_COOKIE,暂时不会 //设置报错级别 if(defined('DEBUG')){ error_reporting(E_ALL); }else{ error_reporting(0); } ?> 本文转自 IT阿飞 51CTO博客,原文链接:http://blog.51cto.com/itafei/1711171