groundsix/config

合并配置文件的工具,目前支持XML格式

dev-master 2013-06-04 10:51 UTC

This package is not auto-updated.

Last update: 2024-09-23 14:13:06 UTC


README

Total Downloads

此组件允许您合并多个配置文件。通常,您可能会使用 .gitignore 文件,以便您的团队中的所有开发者都可以维护他们自己的开发环境特定的设置。然而,这种方法允许您保留一个版本控制的配置文件,其中包含结构和共享内容,每个开发者可以在一个单独的文件中覆盖他们自己的设置,该文件由他们控制。

合并后的配置将是一个数组。

安装

将项目添加到您的 composer.json 文件中

{
    "require": {
        "groundsix/config": "dev-master"
    }
}

安装项目

php composer.phar update

用法

require_once(__DIR__.'/vendor/autoload.php');
$xml_loader = new \GroundSix\Config\XmlLoader(new \GroundSix\Config\ConfigurationsCollection());
$xml_loader->loadFiles(__DIR__.'/config1.xml', __DIR__.'/config2.xml');
$merger = new \GroundSix\Config\Merger();
$config = $merger->merge($xml_loader->getConfigurations());

示例

配置1

<?xml version="1.0" ?>
<settings>
    <application>
        <template_set>twig</template_set>
        <environment>production</environment>
    </application>
    <notice>
        <enabled>true</enabled>
    </notice>
    <databases>
        <mysql>
            <user>production</user>
        </mysql>
    </databases>
    <search>
        <period>31536000</period>
    </search>
    <payments>
        <sandbox>0</sandbox>
        <methods>
            <provider_a>
                <app_id>A</app_id>
                <app_secret>S</app_secret>
                <merchant_id>M</merchant_id>
                <access_token>T</access_token>
            </provider_a>
        </methods>
    </payments>
</settings>

配置2

<?xml version="1.0" ?>
<settings>
    <application>
        <environment>staging</environment>
    </application>
    <databases>
        <mysql>
            <user>staging</user>
        </mysql>
    </databases>
    <payments>
        <sandbox>1</sandbox>
        <methods>
            <provider_a>
                <app_id>A2</app_id>
                <app_secret>S2</app_secret>
                <merchant_id>M2</merchant_id>
                <access_token>T2</access_token>
            </provider_a>
        </methods>
    </payments>
</settings>

合并后的配置

Array
(
    [application] => Array
        (
            [template_set] => twig
            [environment] => staging
        )
    [notice] => Array
        (
            [enabled] => true
        )
    [databases] => Array
        (
            [mysql] => Array
                (
                    [user] => staging
                )
        )
    [search] => Array
        (
            [period] => 31536000
        )
    [payments] => Array
        (
            [sandbox] => 1
            [methods] => Array
                (
                    [provider_a] => Array
                        (
                            [app_id] => A2
                            [app_secret] => S2
                            [merchant_id] => M2
                            [access_token] => T2
                        )
                )
        )
)