opxcore / config-repository-files
OpxCore 本地文件系统配置存储驱动。
1.0.4
2021-02-17 13:16 UTC
Requires
- php: ^7.4
- opxcore/array: ^1.0
- opxcore/config-repository-interface: ^1.0.1
Requires (Dev)
- phpunit/phpunit: ^9.5
README
配置文件加载器
安装
composer require opxcore/config-repository-files
独立使用
use OpxCore\Config\ConfigRepositoryFiles; $configFiles = new ConfigRepositoryFiles($path);
与container一起使用
use OpxCore\Interfaces\ConfigRepositoryInterface; use OpxCore\Config\ConfigRepositoryFiles; $container->bind( ConfigRepositoryInterface::class, ConfigRepositoryFiles::class, ['path' => $path] ); $configFiles = $container->make(ConfigRepositoryInterface::class); // or $container->bind(ConfigRepositoryInterface::class, ConfigRepositoryFiles::class); $configFiles = $container->make(ConfigRepositoryInterface::class, ['path' => $path]);
其中$path是配置文件文件夹的绝对路径。
加载配置
$loaded = $configFiles->load($config, $profile, $overrides)
从构造函数中提供的路径加载配置数组。配置文件将仅从指定的目录加载(有关更多信息,请参阅$profile),不会包含子目录。
$config是加载的配置数组。在失败的情况下(配置目录不存在或在加载文件时发生某些错误)此变量将不会修改。否则,它将包含读取的配置数组,如果没有配置文件则包含空数组。
$profile是要加载的配置的配置文件名。可以是null、'default'或某些字符串标识符。null表示配置文件放置在构造函数中指定的$path目录中。如果$profile是'default'或任何字符串标识符,则将从{$path}/{$profile}目录中加载配置。
$overrides是要由$profile覆盖的配置文件名。这意味着将加载名为$overrides的配置,然后递归地将$profile中存在的所有键合并到结果中。因此,您可以拥有一个默认配置文件,并用另一个配置文件覆盖一些值。
如果目录存在且没有读取文件错误,将返回true
(或如果目录存在但为空)。如果目录不存在或发生任何错误,将返回false。
保存配置
尚未实现。
配置文件内容
配置文件必须返回数组。
// app.php <?php return [ 'name' => 'My awesome application', 'enabled' => env('ENABLED', true), // and so on ];
您可以使用由config-environment提供的env()函数,该函数作为依赖项安装。如果您想使用此功能,必须首先加载环境。
\OpxCore\Config\ConfigEnvironment::load();
有关详细信息,请参阅config-environment。
配置文件示例
/myapp/
config/
default/
app.php
cache.php
web/
app.php
cache.php
app.php
cache.php
$configFiles = new ConfigRepositoryFiles('/myapp/config'); // loads config files from /myapp/config $configFiles->load($config); // loads config files from /myapp/config/default $configFiles->load($config, 'default'); // loads config files from /myapp/config/web and merges result // with /myapp/config/default. 'web' has higher priority. $configFiles->load($config, 'web', 'default');