php单例模式 实现获取配置文件

[1]写一个存放配置文件的php文件  config.inc.php
<?php
/**
 * Created by PhpStorm.
 * User: liyan
 * Date: 2015/6/6
 * Time: 16:02
 * 配置文件
*/
$_CFG =array();
$_CFG['mysql']= array(
'host'=>'localhost',
'username'=>'root',
'password' => '',
);
[2]用单例模式实现调用配置文件
<?php
/**
 * Created by PhpStorm.
 * User: liyan
 * Date: 2015/6/6
 * Time: 17:58
 * 本类作用:操作配置文件
*/
class conf{
//    声明一个变量用于存放实例化的类
protected static $ins = null;
//    声明一个变量用于存放配置数据
protected static $data = array();
final protected function __construct(){
//   引入配置文件并赋值给$data变量
include_once('./config.inc.php');
     self::$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;
     }
}
//   用__get魔术方法 获取$data里面的配置数据
public  function __get($key){
      if(array_key_exists($key,self::$data)){
            return self::$data[$key];
      }else{
            return null;
      }
}
//   用__set魔术方法 动态的添加/修改配置文件
public function __set($key,$values){
         self::$data[$k] = $values;
}
}

【3】获取配置文件方法

$conf= conf::getIns();
//获取配置文件
print_r($conf->mysql);
//添加配置文件
$conf->sss='3213';
print_r($conf->sss);

结果如下:

Array ( [host] => localhost [username] => root [password] => ) 3213
0 Comments
Leave a Reply