e-artspace/pimple-env-provider

一个超级简单、与uSilex兼容、轻量级的服务提供者,用于使用环境变量的值覆盖Pimple容器的参数。

2.0.1 2019-09-23 07:31 UTC

This package is auto-updated.

Last update: 2024-09-23 18:13:02 UTC


README

Build Status Code Coverage Scrutinizer Code Quality

pimple-env-provider是一个超级简单、与Silex兼容、轻量级的服务提供者,允许使用环境变量的值覆盖Pimple容器的参数。

安装

> composer require e-artspace/pimple-env-provider

#使用

允许覆盖的容器参数必须在env.prefix数组中声明。对于每个参数,必须提供一个类型化服务名称(自定义或预定义)。

在容器使用之前调用'env.overload'。

putenv('DEBUG_APP=false');

$container = new \Pimple\Container([
	'debug.app'=> true
]);

$container->register(new \EnvProvider\EnvProvider([
	'env.vars'=>[
		'debug.app'=>'env.cast.boolean'
	]
]);

assert($container['debug.app'] === true);

$container['env.overload']; // this do the magic

assert($container['debug.app'] === false);

预定义服务

  • env.cast.strval:转换为字符串
  • env.cast.intval:转换为整数
  • env.cast.json_decode:从JSON字符串转换为数组
  • env.cast.boolean:转换为布尔值 'true'、'TRUE' 或 '1' => true,其他情况为 false
  • env.name.builder:生成环境变量名称的函数,默认:环境变量名 = strtoupper((str_replace('.', '_', 容器变量名)));
  • env.prefix:生成环境变量名称的前缀(默认为空)

创建一个新的转换服务

$container['env.cast.onoff'] = $app->protect(function($str) {
	return (0===strcasecmp('on',$str));
};

自定义env.name.builder服务

$container['env.name.builder'] = app->protect(function($name) {
	return strtolower((str_replace('.', '-', $name)));;
})

使用docker开发和测试

$ docker run --rm -ti -v $PWD/.:/app composer install
$ docker run --rm -ti -v $PWD/.:/app composer vendor/bin/phpunit

许可

(c) Enrico Fagnoni MIT许可(见文件)