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')才会取到值,第一次见到这样的用法,感觉有些奇怪。

  • 相关阅读:
    关于键盘事件对象code值
    解决父元素定位后宽度不随着子元素增大而增大的问题
    绝对定位后元素的宽高如果用百分比表示的计算方法
    4.7做作业时发现,内联元素设置宽高背景以后正常不显示,但是设置了position:absolute;以后就可以显示了。起到了和display:block;一样的效果。然后查了一下知道了。
    react-native中显示本地照片或视频
    用js实现div元素的拖拽、
    TCP协议浅谈
    TCP的三次握手和四次挥手
    TCP协议
    关于this指向的一点小分享
  • 原文地址:https://www.cnblogs.com/keheng/p/2660624.html
Copyright © 2011-2022 走看看