saxulum/config-service-provider

此软件包已被废弃,不再维护。未建议替代软件包。

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

2.0.1 2016-10-11 08:39 UTC

README

Build Status Total Downloads Latest Stable Version Scrutinizer Code Quality

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.2symfony/yaml 软件包。

使用 TOML

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

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

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

使用纯 PHP

如果在生产中读取配置文件成为性能问题,您可以改用纯 PHP 文件,并且它将被 APC 缓存。

您必须将配置重写为返回配置数据数组的 PHP 文件,并确保它以 .php 结尾

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

多个配置文件

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

注册顺序

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