lorenzoferrarajr / lfj-configuration-builder
一个PHP库,可以从各种来源构建数组配置
0.2.2
2015-12-04 19:04 UTC
Requires
- php: >=5.5
- zendframework/zend-stdlib: ^2
Requires (Dev)
- phpunit/phpunit: ~4.6
README
一个PHP库,用于合并配置数组。
安装
建议的安装方法是使用 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.php
和 mail.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();