zoukankan      html  css  js  c++  java
  • ThinkPHP 5.0 配置

    ThinkPHP 5.0 配置

    目录

    <!--
    系统默认的配置文件目录就是应用目录(APP_PATH),
    也就是默认的application下面,并分为应用配置
    (整个应用有效)和模块配置(仅针对该模块有效)。
    -->
    ├─application         应用目录
    │  ├─config.php       应用配置文件
    │  ├─database.php     数据库配置文件
    │  ├─route.php        路由配置文件
    │  ├─index            index模块配置文件目录
    │  │  ├─config.php    index模块配置文件
    │  │  └─database.php  index模块数据库配置文件
    
    
    <!--
    如果不希望配置文件放到应用目录下面,可以在入口文件中定义独立的配置目录,添加CONF_PATH常量定义即可,如下:
    -->
    
    // 定义配置文件目录和应用目录同级
    define('CONF_PATH', __DIR__.'/../config/');
    
    // 扩展配置目录
    <!--
    5.0.1开始增加了扩展配置目录的概念,在应用配置
    目录或者模块配置目录下面增加extra子目录,下面
    的配置文件都会自动加载,无需任何配置。
    -->
    
    <!--
    如果你定义了CONF_PATH常量为config目录为例,
    扩展配置目录如下:
    -->
    ├─application         应用目录
    ├─config              配置目录
    │  ├─config.php       应用配置文件
    │  ├─database.php     数据库配置文件
    │  ├─route.php        路由配置文件
    │  ├─extra            应用扩展配置目录
    │  ├─index            index模块配置文件目录
    │  │  ├─extra         index模块扩展配置目录
    │  │  ├─config.php    index模块配置文件
    │  │  └─database.php  index模块数据库配置文件
    <!--
    扩展配置文件的文件名(不含后缀)就是配置参数名,并且会和应用配置文件中的参数进行合并。
    -->
    
    

    配置格式

    配置参数名不区分大小写(因为无论大小写定义都会转换成小写),新版的建议是使用小写定义配置参数的规范。

    // 数组 项目配置文件
    return [
        // 默认模块名
        'default_module'        => 'index',
        // 默认控制器名
        'default_controller'    => 'Index',
        // 默认操作名
        'default_action'        => 'index',
        //更多配置参数
        //...
    ];
    
    // 二维数组 项目配置文件
    return [
        'cache'                 => [
            'type'   => 'File',
            'path'   => CACHE_PATH,
            'prefix' => '',
            'expire' => 0,
        ],
    ];
    

    其他配置格式支持

    默认方式为PHP数组方式定义配置文件,你可以在入口文件定义CONF_EXT常量来更改为其它的配置类型:

    // 更改配置格式为ini格式
    define('CONF_EXT', '.ini');

    <!--ini格式配置示例:-->
    
    default_module=Index ;默认模块
    default_controller=index ;默认控制器
    default_action=index ;默认操作
    
    
    
    <!--xml格式配置示例:-->
    
    <config>
    <default_module>Index</default_module>
    <default_controller>index</default_controller>
    <default_action>index</default_action>
    </config>
    
    
    <!--json格式配置示例:-->
    
    {
    "default_module":"Index",
    "default_controller":"index",
    "default_action":"index"
    }
    

    二级配置

    配置参数支持二级,例如,下面是一个二级配置的设置和读取示例:

    $config = [
        'user'  =>  [
            'type'  =>  1,
            'name'  =>  'thinkphp',
        ],
        'db'    =>  [
            'type'      =>  'mysql',
            'user'      =>  'root',
            'password'  =>  '',
        ],
    ];
    // 设置配置参数
    Config::set($config);
    // 读取二级配置参数
    echo Config::get('user.type');
    // 或者使用助手函数
    echo config('user.type');
    

    系统不支持二级以上的配置参数读取,需要手动分步骤读取。
    有作用域的情况下,仍然支持二级配置的操作。


    配置加载

    1. 加载顺序:在ThinkPHP中,一般来说应用的配置文件是自动加载的,加载的顺序是:
    惯例配置-》应用配置-》扩展配置-》场景配置-》模块配置-》动态配置
    
    1. 惯例配置:惯例重于配置是系统遵循的一个重要思想,框架内置有一个惯例配置文件(位于thinkphp/convention.php),按照大多数的使用对常用参数进行了默认配置。所以,对于应用的配置文件,往往只需要配置和惯例配置不同的或者新增的配置参数,如果你完全采用默认配置,甚至可以不需要定义任何配置文件
    2. 应用配置:应用配置文件是应用初始化的时候首先加载的公共配置文件,默认位于application/config.php。
    3. 扩展配置:扩展配置文件是由extra_config_list配置参数定义的额外的配置文件,默认会加载database和validate两个扩展配置文件。
    4. 场景配置:不同的业务场景使用指定的配置文件,场景配置文件和应用配置文件config.php是一样的定义。
    5. 模块配置:每个模块会自动加载自己的配置文件(位于application/当前模块名/config.php)。模块还可以支持独立的状态配置文件,命名规范为:application/当前模块名/应用状态.php。
    6. 动态配置:
    Config::set('配置参数','配置值');
    // 或者使用助手函数
    config('配置参数','配置值');
    // 批量设置
    Config::set([
        '配置参数1'=>'配置值',
        '配置参数2'=>'配置值'
    ]);
    // 或者使用助手函数
    config([
        '配置参数1'=>'配置值',
        '配置参数2'=>'配置值'
    ]);
    

    读取配置

    1. echo Config::get('配置参数1');
    2. echo config('配置参数1');
    3. dump(Config::get()); || dump(config());
    4. Config::has('配置参数2'); || config('?配置参数2');
    5. echo Config::get('配置参数.二级参数');
      echo config('配置参数.二级参数');

    独立配置文件

    配置文件支持分离(也称为扩展配置),只需要在公共配置文件配置extra_config_list参数(V5.0.1版本已经废除该写法)。

    例如,不使用独立配置文件的话,数据库配置信息应该是在config.php中配置如下:
    
    /* 数据库设置 */
    'database'              => [
        // 数据库类型
        'type'        => 'mysql',
        // 服务器地址
        'hostname'    => '127.0.0.1',
        // 数据库名
        'database'    => 'thinkphp',
        // 数据库用户名
        'username'    => 'root',
        // 数据库密码
        'password'    => '',
        // 数据库连接端口
        'hostport'    => '',
        // 数据库连接参数
        'params'      => [],
        // 数据库编码默认采用utf8
        'charset'     => 'utf8',
        // 数据库表前缀
        'prefix'      => '',
        // 数据库调试模式
        'debug'       => false,
    ],
    如果需要使用独立配置文件的话,则首先在config.php中添加配置:
    
    'extra_config_list'     => ['database'],
    定义之后,数据库配置就可以独立使用database.php文件,配置内容如下:
    
    /* 数据库设置 */
    return [
        // 数据库类型
        'type'        => 'mysql',
        // 服务器地址
        'hostname'    => '127.0.0.1',
        // 数据库名
        'database'    => 'thinkphp',
        // 数据库用户名
        'username'    => 'root',
        // 数据库密码
        'password'    => '',
        // 数据库连接端口
        'hostport'    => '',
        // 数据库连接参数
        'params'      => [],
        // 数据库编码默认采用utf8
        'charset'     => 'utf8',
        // 数据库表前缀
        'prefix'      => '',
        // 数据库调试模式
        'debug'       => false,
    ],
    如果配置了extra_config_list参数,并同时在config.php和database.php文件中都配置的话,则database.php文件的配置会覆盖config.php中的设置。
    
    独立配置文件的参数获取都是二维配置方式,例如,要获取database独立配置文件的type参数,应该是:
    
    Config::get('database.type');
    要获取完整的独立配置文件的参数,则使用:
    
    Config::get('database');
    

    环境变量

    环境变量配置,在此框架中.env的用法与laravel的环境变量配置相同
    
    ThinkPHP5.0支持使用环境变量配置。
    
    在开发过程中,可以在应用根目录下面的.env来模拟环境变量配置,.env文件中的配置参数定义格式采用ini方式,例如:
    
    app_debug =  true
    app_trace =  true
    如果你的部署环境单独配置了环境变量,那么请删除.env配置文件,避免冲突。
    
    环境变量配置的参数会全部转换为大写,值为 null,no 和 false 等效于 "",值为 yes 和 true 等效于 "1"。
    
    ThinkPHP5.0默认的环境变量前缀是PHP_,也可以通过改变ENV_PREFIX常量来重新设置。
    注意,环境变量不支持数组参数,如果需要使用数组参数可以,使用下划线分割定义配置参数名:
    
    database_username =  root
    database_password =  123456
    或者使用
    
    [database]
    username =  root
    password =  123456
    获取环境变量的值可以使用下面的两种方式获取:
    
    Env::get('database.username');
    Env::get('database.password');
    // 同时下面的方式也可以获取
    Env::get('database_username');
    Env::get('database_password');
    可以支持默认值,例如:
    
    // 获取环境变量 如果不存在则使用默认值root
    Env::get('database.username','root');
    可以直接在应用配置中使用环境变量,例如:
    
    return [
        'hostname'  =>  Env::get('hostname','127.0.0.1'),
    ];
    环境变量中设置的app_debug和app_trace参数会自动生效(优先于应用的配置文件),其它参数则必须通过Env::get方法才能读取。
    
  • 相关阅读:
    程序的链接
    Graphviz 画图的一些总结
    C表达式中的汇编指令
    epoll(2) 源码分析
    epoll(2) 使用及源码分析的引子
    eventfd(2) 结合 select(2) 源码分析
    poll(2) 源码分析
    select 源码分析
    kfifo
    程序的机器级表示:寻址方式、指令及栈的运行机制
  • 原文地址:https://www.cnblogs.com/maomojun/p/9330714.html
Copyright © 2011-2022 走看看