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 相关文章推荐
DOMXML函数笔记
Oct 09 PHP
phpMyAdmin 安装及问题总结
May 28 PHP
linux下使用ThinkPHP需要注意大小写导致的问题
Aug 02 PHP
ThinkPHP令牌验证实例
Jun 18 PHP
php实现编辑和保存文件的方法
Jul 20 PHP
thinkphp实现163、QQ邮箱收发邮件的方法
Dec 18 PHP
Linux环境下php实现给网站截图的方法
May 03 PHP
php实现在新浪云中使用imagick生成缩略图并上传的方法
Sep 26 PHP
php框架CodeIgniter使用redis的方法分析
Apr 13 PHP
php微信公众号开发之欢迎老朋友
Oct 20 PHP
PHP多进程通信-消息队列使用
Mar 08 PHP
php适配器模式简单应用示例
Oct 23 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
把1316这个数表示成两个数的和,其中一个为13的倍数,另一个是11的倍数,求这两个数。
2011/06/24 PHP
PHP实现采集抓取淘宝网单个商品信息
2015/01/08 PHP
Javascript 兼容firefox的一些问题
2009/05/21 Javascript
给jQuery方法添加回调函数一款插件的应用
2013/01/21 Javascript
jquery清空textarea等输入框实现代码
2013/04/22 Javascript
javascript不同类型数据之间的运算的转换方法
2014/02/13 Javascript
jQuery zTree加载树形菜单功能
2016/02/25 Javascript
基于JS实现Android,iOS一个手势动画效果
2016/04/27 Javascript
jQuery UI结合Ajax创建可定制的Web界面
2016/06/22 Javascript
js复制内容到剪贴板代码,js复制代码的简单实例
2016/10/27 Javascript
数组Array的一些方法(总结)
2017/02/17 Javascript
详解Vuejs2.0之异步跨域请求
2017/04/20 Javascript
详解webpack+gulp实现自动构建部署
2017/06/29 Javascript
JS实现分页浏览横向图片(类轮播)实例代码
2017/11/06 Javascript
详解js中的几种常用设计模式
2020/07/16 Javascript
[03:44]2015国际邀请赛选手档案—Cloud9.NoTail
2015/07/28 DOTA
python发送邮件示例(支持中文邮件标题)
2014/02/16 Python
利用Python中的mock库对Python代码进行模拟测试
2015/04/16 Python
python制作花瓣网美女图片爬虫
2015/10/28 Python
解决Python出现_warn_unsafe_extraction问题的方法
2016/03/24 Python
Python实现破解猜数游戏算法示例
2017/09/25 Python
python中ASCII码和字符的转换方法
2018/07/09 Python
python程序封装为win32服务的方法
2021/03/07 Python
python3 字符串/列表/元组(str/list/tuple)相互转换方法及join()函数的使用
2019/04/03 Python
给keras层命名,并提取中间层输出值,保存到文档的实例
2020/05/23 Python
Python字符串格式化常用手段及注意事项
2020/06/17 Python
Python如何实现远程方法调用
2020/08/07 Python
Python常用数字处理基本操作汇总
2020/09/10 Python
The North Face官方旗舰店:美国著名户外品牌
2020/09/28 全球购物
瀑布模型都有哪些优缺点
2014/06/23 面试题
工厂门卫的岗位职责
2014/07/27 职场文书
2014年小学少先队工作总结
2014/12/18 职场文书
教师求职自荐信
2015/03/26 职场文书
放假通知范文
2015/04/14 职场文书
GoFrame gredis缓存DoVar Conn连接对象 自动序列化GoFrame gredisDo/DoVar方法Conn连接对象自动序列化/反序列化总结
2022/06/14 Golang
win10+RTX3050ti+TensorFlow+cudn+cudnn配置深度学习环境的方法
2022/06/25 Servers