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实现百度网盘图片直链的代码分享
Nov 01 PHP
php获取用户IPv4或IPv6地址的代码
Nov 15 PHP
PHP过滤黑名单关键字的方法
Dec 01 PHP
在Windows XP下安装Apache+MySQL+PHP环境
Feb 22 PHP
PHP根据session与cookie用户登录状态操作类的代码
May 13 PHP
php的api数据接口书写实例(推荐)
Sep 22 PHP
thinkPHP简单导入和使用阿里云OSSsdk的方法
Mar 15 PHP
php登录超时检测功能实例详解
Mar 21 PHP
详解php几行代码实现CSV格式文件输出
Jul 01 PHP
解决form中action属性后面?传递参数 获取不到的问题
Jul 21 PHP
PHP架构及原理知识点详解
Dec 22 PHP
PHP Pipeline 实现中间件的示例代码
Apr 26 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
adodb与adodb_lite之比较
2006/12/31 PHP
php之Smarty模板使用方法示例详解
2014/07/08 PHP
PHP单例模式定义与使用实例详解
2017/02/06 PHP
PHP面向对象五大原则之开放-封闭原则(OCP)详解
2018/04/04 PHP
PHP实现打包zip并下载功能
2018/06/12 PHP
Jquery 设置标题的自动翻转
2009/10/03 Javascript
初试jQuery EasyUI 使用介绍
2010/04/01 Javascript
jquery的index方法实现tab效果
2011/02/16 Javascript
基于jquery的滚动鼠标放大缩小图片效果
2011/10/27 Javascript
通过上下左右键和回车键切换光标实现代码
2013/03/08 Javascript
使用js判断当前时区TimeZone是否是夏令时
2014/02/23 Javascript
jquery中attr和prop的区别分析
2015/03/16 Javascript
Jquery 垂直多级手风琴菜单附源码下载
2015/11/17 Javascript
KnockoutJS 3.X API 第四章之表单value绑定
2016/10/10 Javascript
js实现做通讯录的索引滑动显示效果和滑动显示锚点效果
2017/02/18 Javascript
微信小程序 sha1 实现密码加密实例详解
2017/07/06 Javascript
nodejs 简单实现动态html的方法
2018/05/12 NodeJs
Node.js log4js日志管理详解
2018/07/31 Javascript
laydate只显示时分 不显示秒的功能实现方法
2019/09/28 Javascript
何时/使用 Vue3 render 函数的教程详解
2020/07/25 Javascript
vue elementui tree 任意级别拖拽功能代码
2020/08/31 Javascript
[01:07:19]2018DOTA2亚洲邀请赛 4.5 淘汰赛 Mineski vs VG 第一场
2018/04/06 DOTA
python获取标准北京时间的方法
2015/03/24 Python
Python分布式进程中你会遇到的问题解析
2019/05/28 Python
Python从文件中读取指定的行以及在文件指定位置写入
2019/09/06 Python
python使用 request 发送表单数据操作示例
2019/09/25 Python
python输出数组中指定元素的所有索引示例
2019/12/06 Python
Python多进程编程multiprocessing代码实例
2020/03/12 Python
Python读取yaml文件的详细教程
2020/07/21 Python
西班牙最大的婴儿用品网上商店:Bebitus
2019/05/30 全球购物
美国孕妇装购物网站:Motherhood Maternity
2019/09/22 全球购物
不同浏览器创建XMLHttpRequest方法有什么不同
2014/11/17 面试题
白血病捐款倡议书
2014/05/14 职场文书
大学生第一学年自我鉴定2015
2014/09/28 职场文书
因个人原因离职的辞职信范文
2015/05/12 职场文书
《最后一头战象》读后感:动物也有感情
2020/01/02 职场文书