thinkphp学习--C方法详解

  1.C方法的做用   (注: C 笔者认为是config的缩写)php

            a. 加载设置用户的配置,保存在一个C函数内的静态变量$_config 中
mysql

            b. 读取用户的配置 (从$_congig 中读取)
sql

  2. 需求分析:数组

            1.设置变量
函数

                        1.二维数组
spa

                                 C(array('DB_PASSWORD'=>'root','DB_USERNAME'=>'root'),'DB'); 调试

                                 C('DB.USER_NAME','XIAOCHEN);code

                        2.一维数组
开发

                                C('USER_NAME','小陈');string

                                C(array('USER_NAME'=>'chen','USER_HEIGHT'=>'170'));

            2.读取变量 

                        一维:   C('USER_NAME');

                        二维:  C('DB.DB_PASSWORD');

            3.调试时,查看全部的配置信息

                        C();

3.存放方式及为何要这样存储?

          首先咱们来看一个问题  $arr=array('db'=>'mysql','DB'=>'mysql','Db'=>'mysql'); 从这个数组咱们能够看到db都是指向了mysql,可是在却占用了三个存放空间,在项目的开发不是由一我的完成,每一个人的书写习惯可能不同,因此为了不这种状况,统一的下标转为小写(固然大写也是能够的),因为配置文件在中的数组只有最多只有二维,把一维数组的下标小写就够了

4.实战中是怎么用的?

       php因为对数组的操做很是便捷,因此配置文件通常是写在一个配置文件中,以数组的形式返回

  通常格式为:    config.php        <?  return array('DB'=>'mysql',......);     

        把变量写入到C中  :  C(include 'config.php');     写入后C('DB') 就能够获取值了

5.笔者写的  (新增动态添加二维配置的功能)

      即 C(array('name'=>'mysql','password'=>'root'),'db') 执行后        array('db'=>array('name'=>'mysql','password'=>root))   

代码示例: 

                    

function C($name=null,$value=null){
		static $_config = array();
		 if(!is_null($name)){
		 	if(is_string($name)){
		 		if(is_null($value)){
		 			if(!strpos($name,'.')){
		 				$name = strtolower($name);
		 				return isset($_config[$name]) ? $_config[$name] : null; 
		 			}else{
		 				$name = explode('.',$name);
		 				$name[0] = strtolower($name[0]);
		 				return isset($_config[$name[0]][$name[1]]) ? $_config[$name[0]][$name[1]] : null;
		 			}
		 		}else{
		 			if(!strpos($name,'.')){
		 				$_config[strtolower($name)] = $value;
		 			}else{
		 				$name = explode('.',$name);
		 				$_config[strtolower($name[0])][$name[1]] = $value;
		 			}
		 			return ;
		 		}
		 	}elseif(is_array($name)){
		 		if(is_null($value))
		 			$_config = array_merge($_config,$name);
		 		else{
		 			$_config[$value] = $name;
		 		}
		 		return ;
		 	}
		 }else{
		 	   return empty($_config) ? null: $_config;
		}
}
相关文章
相关标签/搜索