nassau/config-service-provider

为Silex提供配置ServiceProvider,支持php、json和yaml。

2.0 2015-03-28 22:59 UTC

This package is auto-updated.

Last update: 2024-09-23 18:47:10 UTC


README

Silex提供的配置ServiceProvider,支持php、json、yaml和toml。

用法

传递配置文件

将配置文件的路径传递给ServiceProvider的构造函数。这是推荐的做法,允许你定义多个环境。

$env = getenv('APP_ENV') ?: 'prod';
$app->register(new Igorw\Silex\ConfigServiceProvider(__DIR__."/../config/$env.json"));

现在你可以指定一个prod和一个dev环境。

config/prod.json

{
    "debug": false
}

config/dev.json

{
    "debug": true
}

要在这两者之间切换,只需设置APP_ENV环境变量。在apache中,这将是

SetEnv APP_ENV dev

或者在nginx中使用fcgi

fastcgi_param APP_ENV dev

替换

此外,你还可以将替换模式数组作为第二个参数传递。

$app->register(new Igorw\Silex\ConfigServiceProvider(__DIR__."/../config/services.json", array(
    'data_path' => __DIR__.'/data',
)));

现在你可以在配置文件中使用这个模式。

/config/services.json

{
    "xsl.path": "%data_path%/xsl"
}

你还可以通过使用具有%foo%格式的键在配置文件内指定替换。

{
    "%root_path%": "../..",
    "xsl.path": "%root_path%/xsl"
}

使用Yaml

要使用Yaml而不是JSON,只需传递一个以.yml结尾的文件。

$app->register(new Igorw\Silex\ConfigServiceProvider(__DIR__."/../config/services.yml"));

注意,你将需要引入~2.1版本的symfony/yaml包。

使用TOML

要使用TOML而不是其他支持的格式,只需传递一个以.toml结尾的文件。

$app->register(new Igorw\Silex\ConfigServiceProvider(__DIR__."/../config/services.toml"));

注意,你将需要引入~0.1版本的jamesmoss/toml包,并且你正在使用一个前沿的配置格式,因为TOML的规范仍在变化。

使用纯PHP

如果在生产中,每次请求读取配置文件都成为性能问题,你可以使用一个纯PHP文件,它将被APC缓存。

你将需要将你的配置重写为一个返回配置数据数组的PHP文件,并确保它以.php结尾。

$app->register(new Igorw\Silex\ConfigServiceProvider(__DIR__."/../config/prod.php"));

多个配置文件

你可以使用多个配置文件,例如,一个用于整个应用程序,另一个用于特定任务,通过多次调用$app->register(),每次传递另一个Igorw\Silex\ConfigServiceProvider的实例。

注册顺序

确保你在应用程序中将ConfigServiceProvider最后注册。如果你不这样做,其他Provider的默认值将覆盖你的配置。