simblo / environment-service-provider
Silex 的环境 ServiceProvider
此包的官方仓库似乎已消失,因此该包已被冻结。
Requires
- php: ~5.3
- silex/silex: ~1.1
Requires (Dev)
- phpunit/phpunit: ~3.7
- satooshi/php-coveralls: dev-master
This package is not auto-updated.
Last update: 2022-03-28 13:02:21 UTC
README
开发版本仅适用于 Silex 2。请使用 1.0.x 版本用于 Silex 1。
为 Silex 提供的环境 ServiceProvider,它确定围绕 Silex 构建的应用程序运行的环境(例如开发、测试或生产)。
安装
要安装 EnvironmentServiceProvider,请将以下要求添加到您的 composer.json 文件中。
{
"required": {
"simblo/environment-service-provider": "2.0.*@dev"
}
}
使用方法
注册 EnvironmentServiceProvider
可以通过 \Silex\Application 的 register() 方法注册 EnvironmentServiceProvider,就像其他 ServiceProvider 一样。只需在创建应用程序实例后添加此行代码即可
$app->register(new EnvironmentServiceProvider());
配置 EnvironmentServiceProvider
在创建提供者的新实例时,您可以传递一个可选的数组,其中包含配置数据,如下所示...
$app->register(new EnvironmentServiceProvider(array( 'default' => 'bar', 'filepath' => '/your/config/dir', 'filename' => 'thefile.bla.lol', 'variable' => 'MIGHTY_ENVIRONMENT_VARIABLE', 'environments' => array('foo', 'bar'), )));
上面的示例还显示了可以用于配置 EnvironmentServiceProvider 以满足您需求的全部可能的选项。以下是详细解释这些选项。
默认值
默认为 development。可以使用 default 选项来设置一个回退环境,如果检测失败或您故意未设置环境。 default 必须是存在于 environments 中的有效环境。
如果将 default 设置为 false,则如果未检测到环境,EnvironmentServiceProvider 将引发异常而不是回退到默认环境。
文件路径
默认为 false。只要将 filepath 设置为 false,提供者就不会检查包含应用程序应运行的环境的环境文件。如果将其设置为包含环境文件的适当路径,则只要它是存在于 environments 中的有效环境,就使用该文件的内容作为环境。不要在路径末尾添加斜杠,也不要包含环境文件的文件名,因为他在下一个选项中设置。
文件名
默认为 .setenv。此选项表示包含应用程序应运行的环境的文件的名称。如果您不喜欢默认设置或出于任何原因不能使用它,可以更改此选项。
变量
默认为 SILEX_ENVIRONMENT。如果没有设置 filepath 或环境文件不可读,则提供者使用环境变量来确定应用程序环境。如果您无法使用默认值或认为它不适合您的应用程序,可以更改此选项。
环境
默认为开发、测试、预生产和生产环境。应用程序只能在提供商已知的环境中运行。此选项是一个包含表示允许应用程序运行的可识别或有效环境的字符串数组的选项。默认值应满足任何需求,但也许你的应用程序是特别的;)
设置环境
要设置应用程序环境,提供商能够确定有两种不同的方法。
这可以通过设置名为 SILEX_ENVIRONMENT 的环境变量来实现,如下面的示例所示
####.htaccess
SetEnv SILEX_ENVIRONMENT production
PHP
putenv('SILEX_ENVIRONMENT=production');
或者可以在环境文件中设置。在这种情况下,必须在选项中设置一个有效的 filepath。只需在PHP可以访问的位置创建一个名为 .setenv 的文件,并在其中写下所需的 环境。
检索环境
现在,您可以通过使用Silex应用程序的 environment 属性来访问环境,如下所示
$env = $app['environment']