ivoba/dotenv-service-provider

为 Silex 提供的 dotenv ServiceProvider。

2.0.0 2016-05-25 10:17 UTC

This package is auto-updated.

Last update: 2024-09-10 21:42:35 UTC


README

dotenv 提供的 Silex ServiceProvider

Build Status

注意:这被高度过度设计!

这将设置所有具有给定前缀的 Env 变量,默认为 SILEX_,作为 $app 的参数。
您可以传递一个函数来检测是否同时运行 dotenv 加载以从 .env 文件加载变量。

此功能主要替换以下内容

$app['env'] = getenv('SILEX_ENV') ? getenv('SILEX_ENV') : 'dev';
if($app['env'] === 'dev'){
    \Dotenv::load();
}
$app['debug'] = getenv('SILEX_DEBUG') ? getenv('SILEX_DEBUG') : false;
$app['this'] = getenv('this') ? getenv('this') : 'that';
//...
\Dotenv::required();

大约 10 行代码与大约 110 行代码 + 自动加载相比,yiah
所以实际上有点过于华丽,但无论如何;)
一些好处可能是合法的,如支持 getenv、$_ENV 和 $_SERVER。

用法

注册服务

$app->register(new \Ivoba\Silex\EnvProvider(), ['env.options' => ['prefix' => 'MYPREFIX',
    'use_dotenv' => function () use ($app) {
        return $app['env'] === 'dev';
    },
    'dotenv_dir' => __DIR__ . '/../../../..',
    'var_config' => []]
]);
$app['env.load'];

您可以添加每个变量的 defaultrequiredallowedtypecast 配置选项。

$envOptions = ['env.options' => ['var_config' => [
    'hoo' => [EnvProvider::CONFIG_KEY_ALLOWED => 'this'],
    'zack' => [EnvProvider::CONFIG_KEY_REQUIRED => true],
    'dong' => [EnvProvider::CONFIG_KEY_CAST => EnvProvider::CAST_TYPE_BOOLEAN],
    'zip' => [EnvProvider::CONFIG_KEY_DEFAULT => 'zippi']]
]];
$app->register(new \Ivoba\Silex\EnvProvider(), $envOptions);
$app['env.load'];