详解thinkphp的C函数源码以及运行流程和使用注意
来源:互联网 发布:win10 mac地址修改 编辑:程序博客网 时间:2024/06/11 04:28
C函数在thinkphp中使用也是比较频繁的,用法也比较简单,所以只把解读源码的内容以及运行流程图放上,再另外写上一些使用的注意点作为记录,因为thinkphp的官方文档对这方面的使用讲的比较详细,所以这里不会详细说,只说一些重要的容易弄错的地方。
一:C函数源码解读
/** * 获取和设置配置参数 支持批量定义 * @param string|array $name 配置变量 * @param mixed $value 配置值 * @param mixed $default 默认值 * @return mixed */function C($name=null, $value=null,$default=null) { /*初始化静态变量$_config 用来储存本次连接存储的配置*/ static $_config = array(); // 无参数时获取所有,也就是返回所有的配置参数及值的数组 if (empty($name)) { /*要注意调试模式关闭后,更改配置文件里的配置,这里获取到的还是更改前的配置结果*/ return $_config; } // 优先执行设置获取或赋值 // 确定配置变量名的$name是不是字符串 if (is_string($name)) { /*如果是字符串,且$name中不存在.*/ if (!strpos($name, '.')) { /*将$name转换成大写*/ $name = strtoupper($name); /*检查用来配置的值$value是否为null*/ if (is_null($value)) /*为null的话,检查$_config[$name]是不是原来设置过,如果是返回原来设置的值,如果不是,返回默认值$default*/ return isset($_config[$name]) ? $_config[$name] : $default; /*如果不为null的话,则设置$_config[$name]=$value,然后返回空*/ $_config[$name] = $value; return null; } // 二维数组设置和获取支持 // 如果$name存在.,则通过explode将其根据.打散成数组并重新赋值给$name $name = explode('.', $name); /*将.前面的部分分割的$name[0]转变为大写*/ $name[0] = strtoupper($name[0]); /*如果值$value为null*/ if (is_null($value)) /*检查是否存在$_config[$name[0]][$name[1]]这个配置名,如果没有,则返回$default值,如果存在,则返回这个对应的值*/ return isset($_config[$name[0]][$name[1]]) ? $_config[$name[0]][$name[1]] : $default; /*如果$value不为null,则将其赋值给该参数名,并返回空*/ $_config[$name[0]][$name[1]] = $value; return null; } // 批量设置 /*如果$name是一个数组*/ if (is_array($name)){ /*用$name的键全部转换成大写,然后用array_merge将其合并到$_config,如果与$_config重复的键会被后面的$name对应的值覆盖,最后返回null*/ $_config = array_merge($_config, array_change_key_case($name,CASE_UPPER)); return null; } /*如果是非法参数返回null*/ return null; // 避免非法参数}
二:C函数的流程图
三、C函数使用注意点:
C函数有三个参数分别是$name,$value,$default,这三个参数皆有默认值null,所以C函数是可以不传入任何参数的。
注意1:C函数不传入任何参数的时候,是获取所有的配置。
注意2:C函数传入$name,但不传入$value的话是用来取出对应$name的配置值,如果传入$value是则是设置配置$name的值为$value。
注意3:C函数传入的$default是用来获取$name的配置值时,$name没有相应的配置设置的时候返回的值。
注意4:C函数支持批量设置配置,需要以数组形式,格式为array('配置名'=>'配置值','配置名'=>'配置值',...)这种形式作为$name传入C函数进行批量设置。
注意5:C函数设置和获取配置时,可以支持二维数组形式,例如格式为C('NAME.val'),这个就是取出配置,如果要设置三维及以上的数组形式的配置,可以使用数组形式进行添加,如果要取出三维及以上的数组形式的配置,可以用这种数组形式取出C('NAME.val')[0][1],这样就可以取出一个四维数组的配置值。
注意6:C函数名的一维名称必须是大写,但是用户可以使用小写,函数会自动转换,不过还是按规矩来好些。
注意7:C函数配置的配置只能在当前的连接起效,这不是全局的,如果要全局起效必须写入config文件中才行,这个非常重要。
- 详解thinkphp的C函数源码以及运行流程和使用注意
- 详解thinkphp的I函数源码及运转流程和用法
- ThinkPHP 的运行流程
- ThinkPHP函数详解:C方法
- ThinkPHP函数详解:C方法
- ThinkPHP函数详解:C方法
- ThinkPHP函数详解:C方法
- ThinkPHP函数详解:C方法
- ThinkPHP函数详解:C方法
- ThinkPHP函数详解:C方法
- 详解thinkphp的U函数及其源码分析
- 内联函数的使用以及注意点
- 使用thinkphp的整个流程
- RecyclerView和CardView的使用以及注意
- 笔记--ThinkPHP运行流程
- Android篇-高德地图获取SHA1详解以及使用前的注意点和技巧
- thinkphp 5 闭包函数的使用详解
- c中strcpy函数的使用注意:(来源:c和指针)
- 神经网络中的梯度下降
- 基于OpenAI Gym学习强化学习
- 二叉树遍历 java
- Execution failed for task ':app:transformClassesWithJarMergingForDebug'. > com.android.build.api.tra
- matlab 如何设置工作路径
- 详解thinkphp的C函数源码以及运行流程和使用注意
- 浅谈算法和数据结构: 二 基本排序算法
- JS实现div动态水平垂直居中
- PAI深度学习Tensorflow框架多机多卡多PS Server使用说明
- mongodb数据库常用指令
- 10045---Servlet、Filter 和Listener 工作原理
- Linux第二章习题
- highcharts 处理时间不连续的图表封装函数
- M3的MCU的启动过程