zoukankan      html  css  js  c++  java
  • 为何会有记忆功能呢?

    研究thinkphp很久了,总是感觉模不透thinkphp的编程思路及程序具体的运行方式,没办法,只能一步一步的跟踪,有时候会跟的头都痛了,可能是自己功力不够深厚的原因吧,不知道是程序员故意把程序弄的那么复杂,让别人摸不透还是咋的,总是会九转十八弯,今天在研究thinkphp的时候还碰到一个有“记忆功能”的自定义函数,也许是自己见识短,可能对于大侠来说已经是见怪不怪的了,

    // 获取配置值
    function C($name=null, $value=null) {
        static $_config = array();
        if (empty($name))   return $_config;
        // 优先执行设置获取或赋值 keheng
        if (is_string($name)) {
            if (!strpos($name, '.')) {
                $name = strtolower($name);
                if (is_null($value))
                    return isset($_config[$name]) ? $_config[$name] : null;
                $_config[$name] = $value;
                return;
            }
            // 二维数组设置和获取支持
            
            $name = explode('.', $name);
            $name[0]   =  strtolower($name[0]);
            if (is_null($value))
                return isset($_config[$name[0]][$name[1]]) ? $_config[$name[0]][$name[1]] : null;
            $_config[$name[0]][$name[1]] = $value;
            return;
        }
        // 批量设置
        if (is_array($name)){
            return $_config = array_merge($_config, array_change_key_case($name));
        }
        return null; // 避免非法参数
    }

     在think.class.php里面会有个引用函数

     C(require THINK_PATH.'Conf/convention.php');

     而convention.php里的内容确是以这样的一种形式存在。

    if (!defined('KEHENG_PATH')) exit();
    return  array(
        /* 项目设定 */
        'APP_STATUS'            => 'debug',  // 应用调试模式状态 调试模式开启后有效 默认为debug 可扩展 并自动加载对应的配置文件
        'APP_FILE_CASE'         => false,   // 是否检查文件的大小写 对Windows平台有效
        'APP_FILE_CASE1'         => 'NND,到底是怎么回事',
        'APP_AUTOLOAD_PATH'     => '',// 自动加载机制的自动搜索路径,注意搜索顺序
        'APP_TAGS_ON'           => true, // 系统标签扩展开关
        'APP_TAGS_ON1'          => '------------------------------就是这里了', // 系统标签扩展开关
        'APP_SUB_DOMAIN_DEPLOY' => false,   // 是否开启子域名部署
        'APP_SUB_DOMAIN_RULES'  => array(), // 子域名部署规则
        'APP_SUB_DOMAIN_DENY'   => array(), //  子域名禁用列表
        'APP_GROUP_LIST'        => '',      // 项目分组设定,多个组之间用逗号分隔,例如'Home,Admin'
    }

     在运行到这里的时候,C函数的$name值为Array(),反回出来return $_config;

    只有这样后后面的C('APP_FILE_CASE')才会取到值,第一次见到这样的用法,感觉有些奇怪。

  • 相关阅读:
    泛型应用----泛型接口、泛型方法、泛型数组、泛型嵌套
    有选择性的启用SAP UI5调试版本的源代码
    SAP UI5应用入口App.controller.js是如何被UI5框架加载的?
    SAP WebIDE里UI5应用的隐藏文件project.json
    SAP UI5的support Assistant
    如何用SAP WebIDE的Fiori创建向导基于ABAP OData service快速创建UI5应用
    SAP Cloud Platform上Destination属性为odata_gen的具体用途
    Marketing Cloud contact主数据的csv导入
    Marketing Cloud的contact merge机制
    如何让某些用户对Marketing Cloud的contact数据只能实施只读操作
  • 原文地址:https://www.cnblogs.com/keheng/p/2660624.html
Copyright © 2011-2022 走看看