THIINKPHP框架中C函数详解

原创 2016年06月01日 23:05:22
直接帖出来TP框架中关于C函数的源代码,一些内容在代码注释中
/**
 * 获取和设置配置参数 支持批量定义
 * @param string|array $name 配置变量
 * @param mixed $value 配置值
 * @param mixed $default 默认值
 * @return mixed
 */
function C($name=null, $value=null,$default=null) {
    static $_config = array();
    // 无参数时获取所有
    if (empty($name)) {
        return $_config;
    }
    // 优先执行设置获取或赋值
    if (is_string($name)) {
        if (!strpos($name, '.')) {
            //在TP开发手册中,有说配置项的键不区分大小写,是因为代码中都默认将键
            //转化为大写
           $name = strtoupper($name);
            if (is_null($value))
                return isset($_config[$name]) ? $_config[$name] : $default;
            $_config[$name] = $value;
            return null;
        }
        // 二维数组设置和获取支持
        //TP框架中支持,配置项写成二维数组的格式
        /*例如<pre style="" class="prettyprint linenums prettyprinted"><li class="L1"><code><span class="kwd">        return</span><span class="pln"> array</span><span class="pun">(</span></code></li><li class="L2"><code><span class="pln">    </span><span class="str">'DEFAULT_MODULE'</span><span class="pln">     </span><span class="pun">=></span><span class="pln"> </span><span class="str">'Index'</span><span class="pun">,</span><span class="pln"> </span><span class="com">//默认模块</span></code></li><li class="L3"><code><span class="pln">    </span><span class="str">'URL_MODEL'</span><span class="pln">          </span><span class="pun">=></span><span class="pln"> </span><span class="str">'2'</span><span class="pun">,</span><span class="pln"> </span><span class="com">//URL模式</span></code></li><li class="L4"><code><span class="pln">    </span><span class="str">'SESSION_AUTO_START'</span><span class="pln"> </span><span class="pun">=></span><span class="pln"> </span><span class="kwd">true</span><span class="pun">,</span><span class="pln"> </span><span class="com">//是否开启session</span></code></li><li class="L5"><code><span class="pln">    </span><span class="str">'USER_CONFIG'</span><span class="pln">        </span><span class="pun">=></span><span class="pln"> array</span><span class="pun">(</span></code></li><li class="L6"><code><span class="pln">        </span><span class="str">'USER_AUTH'</span><span class="pln"> </span><span class="pun">=></span><span class="pln"> </span><span class="kwd">true</span><span class="pun">,</span></code></li><li class="L7"><code><span class="pln">        </span><span class="str">'USER_TYPE'</span><span class="pln"> </span><span class="pun">=></span><span class="pln"> </span><span class="lit">2</span><span class="pun">,</span></code></li><li class="L8"><code><span class="pln">    </span><span class="pun">),</span></code></li><li class="L9"><code><span class="pln">    </span><span class="com">//更多配置参数</span></code></li><li class="L1"><code><span class="pln">    </span><span class="com">//...</span><span class="pun"></span></code></li><li class="L1"><code><span class="pun">    );</span></code></li>
*/
//取的时候写成 C('USER_CONFIG.USER_TYPE');
  //是通过下面这段代码,先将字符串以.字符分隔,在取出来相应数值
$name = explode('.', $name); $name[0] = strtoupper($name[0]); if (is_null($value)) return isset($_config[$name[0]][$name[1]]) ? $_config[$name[0]][$name[1]] : $default; $_config[$name[0]][$name[1]] = $value; return null; } // 批量设置
//主要使用array_merge函数做了数组合并,array_change_key_case函数做了键大写
if (is_array($name)){ $_config = array_merge($_config, array_change_key_case($name,CASE_UPPER)); return null; } return null; // 避免非法参数}

                

PHP调用C函数简单例子

1、找到PHP扩展脚本ext_skel,ext_skel是PHP源代码中的脚本工具,位于目录ext下find / -name ext_skel2、 生成名字为helloworld的目录,该目录包含所需...
  • qq_23084801
  • qq_23084801
  • 2017年08月31日 17:11
  • 440

php调用C代码的方法详解

在php程序中需要用到C代码,应该是下面两种情况:1 已有C代码,在php程序中想直接用2 由于php的性能问题,需要用C来实现部分功能针对第一种情况,最合适的方法是用system调用,把现有C代码写...
  • oyd
  • oyd
  • 2008年10月28日 17:10
  • 26059

tp中的M,D,C,A,I,S方法

才开始接触tp,对里面的大写字母方法不是很理解。现在清晰多了。D方法实例化模型类的时候通常是实例化某个具体的模型类,如果仅仅是对数据表进行基本的CURD操作的话,可以使用M方法.由于不要加载具体的模型...
  • Zoe_sj
  • Zoe_sj
  • 2017年02月09日 09:26
  • 5002

TP框架中的M,D,C,A,I,S方法

M方法 M实例化参数是数据库的表名 //使用M方法实例化$User = M('User');//和用法$User = new /Think/Model ('User');等效//执行其他的数据操作$...
  • qq_29920751
  • qq_29920751
  • 2017年02月09日 21:25
  • 8718

ThinkPHP函数详解:C方法

C方法是ThinkPHP用于设置、获取,以及保存配置参数的方法,使用频率较高。 了解C方法需要首先了解下ThinkPHP的配置,因为C方法的所有操作都是围绕配置相关的。ThinkPHP的配置文件采用...
  • woshinannan741
  • woshinannan741
  • 2015年10月29日 18:16
  • 2605

THIINKPHP框架中C函数详解

直接帖出来TP框架中关于C函数的源代码,一些内容在代码注释中/** * 获取和设置配置参数 支持批量定义 * @param string|array $name 配置变量 * @param mi...
  • u014270740
  • u014270740
  • 2016年06月01日 23:05
  • 1608

C语言函数调用框架

大家在工作中也许会碰到这样的情况,一个C语言程序,可能有十几万行代码,读取上百张的数据表,还要处理N多的业务逻辑 当你和你的小组实现了这样一个系统之后,它工作的很好,这时,大家都长舒了一口气.可是,哪...
  • lilan1983
  • lilan1983
  • 2005年05月25日 15:00
  • 1366

C语言memset函数详解与误用

memset为内存填充函数,包含在头文件中,可以用它对一片内存空间进行初始化,其原型为   void *memset(void *s, int v, size_t n);   英文释义如下:  ...
  • hu_jiacheng
  • hu_jiacheng
  • 2013年05月18日 19:11
  • 11291

在Linux下用C扩展PHP(打包成so)的方法

本文主要讲一下在Linux下用打包C扩展程序.so文件和Windows下的不同,详细的代码和配置方案请参加另一篇博客:http://blog.csdn.net/maverick1990/article...
  • maverick1990
  • maverick1990
  • 2015年07月07日 11:52
  • 2205

php程序员学C/C++

身边有几个做PHP开发的朋友,因为面试,也接触到不少的PHP工程师,他们常疑虑自己将来在技术上的成长与发展,我常给他们一些建议,希望他们能破突自己,有更好的发展。 PHP工程师面临成长瓶颈 ...
  • a923544197
  • a923544197
  • 2012年08月01日 14:40
  • 8732
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:THIINKPHP框架中C函数详解
举报原因:
原因补充:

(最多只允许输入30个字)