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 相关文章推荐
php5编程中的异常处理详细方法介绍
Jul 29 PHP
php 数组二分法查找函数代码
Feb 16 PHP
PHP定时自动生成静态HTML的实现代码
Jun 20 PHP
php下尝试使用GraphicsMagick的缩略图功能
Jan 01 PHP
PHP错误抑制符(@)导致引用传参失败Bug的分析
May 02 PHP
PHP判断图片格式的七种方法小结
Jun 03 PHP
php格式化json函数示例代码
May 12 PHP
微信支付PHP SDK ―― 公众号支付代码详解
Sep 13 PHP
PHP使用第三方即时获取物流动态实例详解
Apr 27 PHP
PHP实现超简单的SSL加密解密、验证及签名的方法示例
Aug 28 PHP
浅谈laravel框架sql中groupBy之后排序的问题
Oct 17 PHP
在 Laravel 中动态隐藏 API 字段的方法
Oct 25 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
PHP 配置open_basedir 让各虚拟站点独立运行
2009/11/12 PHP
浅析虚拟主机服务器php fsockopen函数被禁用的解决办法
2013/08/07 PHP
关于URL最大长度限制的相关资料查证
2014/12/23 PHP
php实现将任意进制数转换成10进制的方法
2015/04/17 PHP
php 批量查询搜狗sogou代码分享
2015/05/17 PHP
实现JavaScript中继承的三种方式
2009/10/16 Javascript
获取数组中最大最小值方法js代码(自写)
2013/08/12 Javascript
javascript随机将第一个dom中的图片添加到第二个div中示例
2013/10/08 Javascript
js网页实时倒计时精确到秒级
2014/02/10 Javascript
通过onmouseover选项卡实现img图片的变化
2014/02/12 Javascript
一个简单的动态加载js和css的jquery代码
2014/09/01 Javascript
AngularJS基础学习笔记之表达式
2015/05/10 Javascript
JQuery插入DOM节点的方法
2015/06/11 Javascript
基于JavaScript实现Json数据根据某个字段进行排序
2015/11/24 Javascript
require简单实现单页应用程序(SPA)
2016/07/12 Javascript
常用的js验证和数据处理总结
2016/08/02 Javascript
微信小程序 用户数据解密详细介绍
2017/01/09 Javascript
jQuery取得元素标签名称小结(附代码)
2017/08/16 jQuery
原生javascript AJAX 三级联动的实现代码
2018/05/04 Javascript
小程序scroll-view组件实现滚动的示例代码
2018/09/20 Javascript
vue从一个页面跳转到另一个页面并携带参数的解决方法
2019/08/12 Javascript
Vue项目中Api的组织和返回数据处理的操作
2019/11/04 Javascript
Javascript ParentNode和ChildNode接口原理解析
2020/03/16 Javascript
基于pytorch padding=SAME的解决方式
2020/02/18 Python
Keras在训练期间可视化训练误差和测试误差实例
2020/06/16 Python
python 带时区的日期格式化操作
2020/10/23 Python
英国羊绒服装购物网站:Pure Collection
2018/10/22 全球购物
澳大利亚珍珠首饰购物网站:Vayo Pearls
2019/03/11 全球购物
Unix控制后台进程都有哪些进程
2016/09/22 面试题
业务员岗位职责范本
2013/12/15 职场文书
2014庆六一活动方案
2014/03/02 职场文书
暑期培训随笔感言
2014/03/10 职场文书
房屋委托书范本
2014/04/04 职场文书
2015国庆节66周年演讲稿
2015/03/20 职场文书
公司趣味运动会开幕词
2016/03/04 职场文书
Python机器学习三大件之一numpy
2021/05/10 Python