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 相关文章推荐
simplehtmldom Doc api帮助文档
Mar 26 PHP
PHP基于php_imagick_st-Q8.dll实现JPG合成GIF图片的方法
Jul 11 PHP
PHP+Mysql树型结构(无限分类)数据库设计的2种方式实例
Jul 15 PHP
PHP直接修改表内容DataGrid功能实现代码
Sep 24 PHP
Json_encode防止汉字转义成unicode的方法
Feb 25 PHP
Zend Framework动作助手(Zend_Controller_Action_Helper)用法详解
Mar 05 PHP
php版微信公众平台入门教程之开发者认证的方法
Sep 26 PHP
php中照片旋转 (orientation) 问题的正确处理
Feb 16 PHP
php 删除指定文件夹的实例讲解
Jul 25 PHP
Yii2.0实现生成二维码功能实例
Oct 24 PHP
PHP操作Redis数据库常用方法示例
Aug 25 PHP
基于php解决json_encode中文UNICODE转码问题
Nov 10 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
jquery常用技巧及常用方法列表集合
2011/04/06 Javascript
JavaScript自执行闭包的小例子
2013/06/29 Javascript
JS JSON对象转为字符串的简单实现方法
2013/11/18 Javascript
extjs 时间范围选择自动判断的实现代码
2014/06/24 Javascript
JQuery中的html()、text()、val()区别示例介绍
2014/09/01 Javascript
javascript基本类型详解
2014/11/28 Javascript
node.js中的fs.fsync方法使用说明
2014/12/15 Javascript
jQuery实现字符串按指定长度加入特定内容的方法
2015/03/11 Javascript
JS中生成随机数的用法及相关函数
2016/01/09 Javascript
jQuery获取字符串中出现最多的数
2016/02/22 Javascript
js实现表单提交后不重新刷新当前页面
2016/11/30 Javascript
详解用原生JavaScript实现jQuery的某些简单功能
2016/12/19 Javascript
页面间固定参数,通过cookie传值的实现方法
2017/05/31 Javascript
js实现拖拽上传图片功能
2017/08/01 Javascript
EL表达式截取字符串的函数说明
2017/09/22 Javascript
JavaScript常用截取字符串的三种方式用法区别实例解析
2018/05/15 Javascript
深入理解JavaScript的值传递和引用传递
2018/10/24 Javascript
JavaScript实现随机点名器实例详解
2019/05/07 Javascript
小程序中英文混合排序问题解决
2019/08/02 Javascript
Vue学习之常用指令实例详解
2020/01/06 Javascript
[11:27]《一刀刀一天》之DOTA全时刻20:TI4总奖金突破920W TS赛事分析
2014/06/18 DOTA
[01:20]DOTA2上海特级锦标赛现场采访:谁的ID最受青睐
2016/03/25 DOTA
Python实现的数据结构与算法之队列详解
2015/04/22 Python
Python利用sqlacodegen自动生成ORM实体类示例
2019/06/04 Python
python画微信表情符的实例代码
2019/10/09 Python
python 实现单通道转3通道
2019/12/03 Python
用CSS3绘制三角形的简单方法
2015/07/17 HTML / CSS
粗加工管理制度
2014/02/04 职场文书
家长学校实施方案
2014/03/15 职场文书
生物技术专业求职信
2014/06/10 职场文书
捐款感谢信
2015/01/20 职场文书
自愿离婚协议书2015
2015/01/26 职场文书
今日说法观后感
2015/06/08 职场文书
蓝天保卫战收官在即 :15行业将开展环保分级评价
2019/07/19 职场文书
JavaScript与JQuery框架基础入门教程
2021/07/15 Javascript
logback 实现给变量指定默认值
2021/08/30 Java/Android