thinkphp的c方法使用示例


Posted in PHP onFebruary 24, 2014

1.C方法的作用

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

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

2. 需求分析:

1.设置变量

1.二维数组

C(array('DB_PASSWORD'=>'root','DB_USERNAME'=>'root'),'DB');
C('DB.USER_NAME','XIAOCHEN);

2.一维数组

C('USER_NAME','小陈');
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;
  }
}
PHP 相关文章推荐
在PHP中实现Javascript的escape()函数代码
Aug 08 PHP
array_multisort实现PHP多维数组排序示例讲解
Jan 04 PHP
php中将时间差转换为字符串提示的实现代码
Aug 08 PHP
使用php判断浏览器的类型和语言的函数代码
Feb 28 PHP
ThinkPHP入口文件设置及相关注意事项分析
Dec 05 PHP
php中header跳转使用include包含解决参数丢失问题
May 08 PHP
PHP数组去重比较快的实现方式
Jan 19 PHP
PHP判断FORM表单或URL参数来的数据是否为整数的方法
Mar 25 PHP
PHP实现自动识别原编码并对字符串进行编码转换的方法
Jul 13 PHP
PHP与Perl之间知识点区别整理
Mar 19 PHP
Laravel使用RabbitMQ的方法示例
Jun 18 PHP
php解决crontab定时任务不能写入文件问题的方法分析
Sep 16 PHP
php根据操作系统转换文件名大小写的方法
Feb 24 #PHP
PHP获取本周第一天和最后一天示例代码
Feb 24 #PHP
thinkphp控制器调度使用示例
Feb 24 #PHP
thinkphp路由规则使用示例详解和伪静态功能实现(apache重写)
Feb 24 #PHP
将php数组输出html表格的方法
Feb 24 #PHP
php格式化日期和时间格式化示例分享
Feb 24 #PHP
php目录操作实例代码
Feb 21 #PHP
You might like
综合图片计数器
2006/10/09 PHP
php中var_export与var_dump的区别分析
2010/08/21 PHP
PHP数据类型之布尔型的介绍
2013/04/28 PHP
基于php-fpm的配置详解
2013/06/03 PHP
PHP获取客户端真实IP地址的5种情况分析和实现代码
2014/07/08 PHP
php程序总是提示验证码输入有误解决方案
2015/01/07 PHP
PHP中你应该知道的require()文件包含的正确用法
2015/06/12 PHP
PHP数组的定义、初始化和数组元素的显示实现代码
2016/11/05 PHP
php-fpm重启导致的程序执行中断问题详解
2019/04/29 PHP
JS实现的简单鼠标跟随DiV层效果完整实例
2015/10/31 Javascript
谈谈我对JavaScript中typeof和instanceof的深入理解
2015/12/25 Javascript
AngularJs 弹出模态框(model)
2016/04/07 Javascript
jQuery中fadein与fadeout方法用法示例
2016/09/16 Javascript
JavaScript门面模式详解
2017/10/19 Javascript
nodejs操作mongodb的增删改查功能实例
2017/11/09 NodeJs
微信小程序实现获取自己所处位置的经纬度坐标功能示例
2017/11/30 Javascript
详解node.js的http模块实例演示
2018/07/12 Javascript
详解Vue 如何监听Array的变化
2019/06/06 Javascript
了解Javascript中函数作为对象的魅力
2019/06/19 Javascript
Vue实现点击箭头上下移动效果
2020/06/11 Javascript
Python中有趣在__call__函数
2015/06/21 Python
python如何修改装饰器中参数
2018/03/20 Python
浅谈Pandas 排序之后索引的问题
2018/06/07 Python
基于python实现聊天室程序
2018/07/27 Python
python 按钮点击关闭窗口的实现
2020/03/04 Python
秘鲁购物网站:Linio秘鲁
2017/04/07 全球购物
美国的Eastbay旗下的运动款子品牌:Final-Score
2018/01/01 全球购物
义和团口号
2014/06/17 职场文书
个人务虚会发言材料
2014/10/20 职场文书
公司出差管理制度范本
2015/08/05 职场文书
员工旷工检讨书
2015/08/15 职场文书
护理工作心得体会
2016/01/22 职场文书
医务人员医德医风心得体会
2016/01/25 职场文书
Python实现信息轰炸工具(再也不怕说不过别人了)
2021/06/11 Python
国际最新研究在陨石中发现DNA主要成分 或由陨石带来地球
2022/04/29 数码科技
Mysql数据库事务的脏读幻读及不可重复读详解
2022/05/30 MySQL