lorenzoferrarajr/lfj-configuration-builder

一个PHP库,可以从各种来源构建数组配置

0.2.2 2015-12-04 19:04 UTC

This package is not auto-updated.

Last update: 2024-09-28 18:31:44 UTC


README

一个PHP库,用于合并配置数组。

Build Status

安装

建议的安装方法是使用 composer

composer require lorenzoferrarajr/lfj-configuration-builder

用法

实例化一个 ConfigurationBuilder 对象,添加配置,调用 build 方法以获取合并后的数组。Zend\Stdlib\ArrayUtils::merge 用于合并。

添加配置

ConfigurationBuilder 提供了各种方法,可以用来添加配置

  • addFile:添加一个返回数组的单个PHP文件
  • addFiles:添加多个文件
  • addDirectory:添加位于目录中的文件
  • addArray:从数组中添加配置

异常

要捕获异常,可以在 try 块内调用 build 方法。可用的异常有

  • FileNotExistsException
  • FileNotReadableException
  • NotArrayException:如果配置文件不返回数组
  • NotFileException

示例

以下示例将使用两个配置文件:mail.global.phpmail.local.php

<?php
// mail.global.php

return array(
    'mail' => array(
        'host' => 'localhost',
        'port' => 25
    )
);
<?php
// mail.local.php

return array(
    'mail' => array(
        'host' => '192.168.1.1',
    )
);

从单个文件构建配置

在这个示例中,将两个文件传递给 ConfigurationBuilder 对象:首先传递 mail.global.php 文件,然后传递 mail.local.php 文件。结果将是一个包含第一个文件的 port 和第二个文件的 host 的数组。

$cb = new \Lfj\ConfigurationBuilder\ConfigurationBuilder();

$cb->addFile(__DIR__.'/config/mail.global.php');
$cb->addFile(__DIR__.'/config/mail.local.php');

$config = $cb->build();

一次构建多个文件的配置

这个示例与上一个示例相同,但是将文件一次性作为一个数组传递。

$cb = new \Lfj\ConfigurationBuilder\ConfigurationBuilder();

$cb->addFiles(array(
    __DIR__.'/config/mail.global.php',
    __DIR__.'/config/mail.local.php',
));

$config = $cb->build();

从目录构建配置

在这个示例中,从目录加载配置文件。使用的文件匹配模式与 global($pattern, GLOB_BRACE) 相同,所以首先是 mail.global.php,然后是 mail.local.php

$cb = new \Lfj\ConfigurationBuilder\ConfigurationBuilder();

$cb->addDirectory(__DIR__.'/config/*.{global,local}.php');

$config = $cb->build();

有关模式的更多信息,请参阅 glob 文档。

从目录和数组构建配置

这个示例与上一个示例相同,但是在调用 build 方法之前,通过传递一个数组提供了新的配置。

$cb = new \Lfj\ConfigurationBuilder\ConfigurationBuilder();

$cb->addDirectory(__DIR__.'/config/*.{global,local}.php');
$cb->addArray(array(
    'mail' => array(
        'host' => 'other'
    )
));

$config = $cb->build();