操作配置文件


说明

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

读取运行时配置

运行时配置定义可以看上一篇文档,比如这里我们要读取db.config.php里面的mysql配置,最多可以读取三级.

  1. $mysql_config = Config::runtime('mysql');
  2. $master_config = Config::runtime('mysql.master');
  3. $user = Config::runtime('mysql.master.user');

读取自定义配置

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

store.config.php文件内容

  1. <?php
  2. return [
  3. 'qiniu' => [
  4. 'key' => [
  5. 'ak' => 'akak',
  6. 'sk' => 'sksk',
  7. ],
  8. 'bucket' => [
  9. 'tmp' => 'timophp-tmp',
  10. 'img' => 'timophp-img',
  11. 'avatar' => 'timophp-avatar',
  12. 'audio' => 'timophp-audio',
  13. ],
  14. 'resource' => [
  15. 'img' => 'http://img.timophp.com/',
  16. 'avatar' => 'http://avatar.timophp.com/',
  17. 'audio' => 'http://audio.timophp.com/',
  18. ]
  19. ],
  20. ]
  1. Config::get('store.qiniu.key');

自定义配置在框架初始化的时候是不会加载的,当第一次Config::get的时候,框架会自动加载该配置文件,前提条件是该配置文件必须 存放在/config目录下面,如果是多环境,存放在各自环境目录下面和和/config下面都可以,如dev环境,目录就是/config/dev目录

手动加载配置文件

当我们的配置文件没有存放在/config或多环境,如dev环境/config/dev目录下面的话,我们调用Config::get时,是不会自动加载的,这时,我们 就需要手动加载了

  1. $config_file_path = ROOT_PATH . 'path/to/config.php';
  2. $config = Config::load($config_file_path);

我们在加载配置文件时,可以将它合并到运行时配置,只需传入第二个参数runtime,之后就可以使用Config::runtime()方法来读取了

  1. $config_file_path = ROOT_PATH . 'path/to/config.php';
  2. Config::load($config_file_path, 'runtime');

如果配置文件在配置目录下面,比如/config/abc.config.php,我们可以这样加载:

abc.config.php

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

$config打印出来就是上面abc配置文件的内容

  1. Config::get('store.qiniu.bucket');
  2. Config::load('abc', 'store');

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

  1. $a = Config::get('store.type.a');

$a 打印出来就是 100

动态设置配置

最多支持三级配置

设置运行时配置

  1. Config::setRuntime('cache.path', '/data/TimoSNS/var/cache/');
  2. $path = Config::runtime('cache.path');
  3. $path 打印出来就是 /data/TimoSNS/var/cache/
  4. Config::setRuntime('cache', [
  5. 'type' => 'Redis',
  6. 'prefix' => 'T:'
  7. ]);

设置自定义配置

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