操作配置文件


说明

配置分为运行时配置和自定义配置,运行时配置在框架初始化时会自动加载,自定义配置是在用到的时候才会加载

读取运行时配置

运行时配置定义可以看上一篇文档,比如这里我们要读取db.config.php里面的mysql配置
$mysql_config = Config::runtime('mysql');
$master_config = Config::runtime('mysql.master');
$user = Config::runtime('mysql.master.user');

读取自定义配置

这里我们以上篇提到的store.config.php为例来说明,注意,我们store.config.php是放在了/config目录下面的

store.config.php文件内容

<?php
return [
    'qiniu' => [
        'key' => [
            'ak' => 'akak',
            'sk' => 'sksk',
        ],
        'bucket' => [
            'tmp' => 'timophp-tmp',
            'img' => 'timophp-img',
            'avatar' => 'timophp-avatar',
            'audio' => 'timophp-audio',
        ],
        'resource' => [
            'img' => 'http://img.timophp.com/',
            'avatar' => 'http://avatar.timophp.com/',
            'audio' => 'http://audio.timophp.com/',
        ]
    ],
];
Config::get('store.qiniu.key');
自定义配置在框架初始化的时候是不会加载的,当第一次Config::get的时候,框架会自动加载该配置文件,前提条件是该配置文件必须
存放在/config目录下面,如果是多环境,存放在各自环境目录下面和和/config下面都可以,如dev环境,目录就是/config/dev目录

手动加载配置文件

当我们的配置文件没有存放在/config或多环境,如dev环境/config/dev目录下面的话,我们调用Config::get时,框架是找不到配置文件的,这时,我们
就需要手动加载了
$config_file_path = ROOT_PATH . 'path/to/config.php';
$config = Config::load($config_file_path);
我们在加载配置文件时,可以将它合并到运行时配置,只需传入第二个参数runtime,之后就可以使用Config::runtime()方法来读取了
$config_file_path = ROOT_PATH . 'path/to/config.php';
Config::load($config_file_path, 'runtime');
如果配置文件在配置目录下面,比如/config/abc.config.php,我们可以这样加载:

abc.config.php

return [
    'url' => 'http://www.timophp.com/',
    'type' => [
        'a' => 100,
        'b' => 200,
    ],
];
$config = Config::load('abc');

$config打印出来就是上面abc配置文件的内容
Config::get('store.qiniu.bucket');
Config::load('abc', 'store');

将abc配置合并到store配置,然后就可以这样获取

$a = Config::get('store.type.a');
$a 打印出来就是 100

动态设置配置

设置运行时配置

Config::setRuntime('cache.path', '/data/TimoSNS/var/cache/');
$path = Config::runtime('cache.path');
$path 打印出来就是 /data/TimoSNS/var/cache/

Config::setRuntime('cache', [
    'type' => 'Redis',
    'prefix' => 'T:'
]);

设置自定义配置

Config::set('store.type.a', 'Index');
$a = Config::set('store.type.a');
$a 打印出来就是 Index