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生成随机数或者字符串的代码
Sep 05 PHP
ajax php 实现写入数据库
Sep 02 PHP
php strcmp使用说明
Apr 22 PHP
PHP登录环节防止sql注入的方法浅析
Jun 30 PHP
功能强大的PHP图片处理类(水印、透明度、旋转)
Oct 21 PHP
PHP实现的一致性哈希算法完整实例
Nov 14 PHP
php中使用GD库做验证码
Mar 31 PHP
解析PHP之提取多维数组指定列的方法
Jan 03 PHP
PHP中empty,isset,is_null用法和区别
Feb 19 PHP
PHP实现批量清空删除指定文件夹所有内容的方法
May 30 PHP
PHP简单实现欧拉函数Euler功能示例
Nov 06 PHP
Thinkphp5.0框架的Db操作实例分析【连接、增删改查、链式操作等】
Oct 11 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
兼容ie6浏览器的php下载文件代码分享
2014/07/14 PHP
PHP中foreach()用法汇总
2015/07/02 PHP
运用jquery实现table单双行不同显示并能单行选中
2009/07/25 Javascript
关于scrollLeft,scrollTop的浏览器兼容性测试
2013/03/19 Javascript
jquery ajax post提交数据乱码
2013/11/05 Javascript
基于jquery扩展漂亮的CheckBox(自己编写)
2013/11/19 Javascript
jquery统计用户选中的复选框的个数
2014/06/06 Javascript
javascript使用正则表达式实现去掉空格之后的字符
2015/02/15 Javascript
JS实现不规则TAB选项卡效果代码
2015/09/16 Javascript
JS在Chrome浏览器中showModalDialog函数返回值为undefined的解决方法
2016/08/03 Javascript
微信小程序 教程之注册页面
2016/10/17 Javascript
BootStrap中
2016/12/10 Javascript
js+canvas实现动态吃豆人效果
2017/03/22 Javascript
解读vue生成的文件目录结构及说明
2017/11/27 Javascript
JavaScript图片处理与合成总结
2018/03/04 Javascript
js回文数的4种判断方法示例
2019/06/04 Javascript
javascript实现简单留言板案例
2021/02/09 Javascript
[01:56]《DOTA2》中文配音CG
2013/04/22 DOTA
Python threading多线程编程实例
2014/09/18 Python
Python实现基于多线程、多用户的FTP服务器与客户端功能完整实例
2017/08/18 Python
win10下Python3.6安装、配置以及pip安装包教程
2017/10/01 Python
基于Python实现天天酷跑功能
2021/01/06 Python
解决pytorch下出现multi-target not supported at的一种可能原因
2021/02/06 Python
CSS3 对过渡(transition)进行调速以及延时
2020/10/21 HTML / CSS
深入探究HTML5的History API
2015/07/09 HTML / CSS
用html5绘制折线图的实例代码
2016/03/25 HTML / CSS
美国在线奢侈品寄售商店:Luxury Garage Sale
2018/08/19 全球购物
C#面试题问题集
2016/04/02 面试题
英语演讲稿3分钟
2014/04/29 职场文书
励志演讲稿300字
2014/08/21 职场文书
2014迎国庆演讲稿
2014/09/19 职场文书
《这片土地是神圣的》教学反思
2016/02/16 职场文书
使用CSS实现小三角边框原理解析
2021/11/07 HTML / CSS
「海贼王」112.9万粉丝纪念图标公布
2022/03/21 日漫
使用Python解决图表与画布的间距问题
2022/04/11 Python
Python 装饰器(decorator)常用的创建方式及解析
2022/04/24 Python