ivoba / dotenv-service-provider
为 Silex 提供的 dotenv ServiceProvider。
2.0.0
2016-05-25 10:17 UTC
Requires
- php: >=5.5.9
- silex/silex: ^2.0
- vlucas/phpdotenv: ^1.1
Requires (Dev)
- phpunit/phpunit: ^4.8
This package is auto-updated.
Last update: 2024-09-10 21:42:35 UTC
README
为 dotenv 提供的 Silex ServiceProvider
注意:这被高度过度设计!
这将设置所有具有给定前缀的 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'];
您可以添加每个变量的 default、required、allowed 和 typecast 配置选项。
$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'];