opxcore/config-repository-files

OpxCore 本地文件系统配置存储驱动。

1.0.4 2021-02-17 13:16 UTC

This package is auto-updated.

Last update: 2024-09-17 22:09:26 UTC


README

配置文件加载器

Build Status Coverage Status Latest Stable Version Total Downloads License

安装

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');