nepada / envy
此包已被弃用且不再维护。没有建议的替代包。
从环境变量中提取、验证和类型转换数据的助手
v1.3.1
2022-09-13 19:07 UTC
Requires
- php: >=7.4 <8.2
- nette/utils: ^3.2@dev
Requires (Dev)
- nepada/coding-standard: 7.5.2
- nepada/phpstan-nette-tester: 0.4.0
- nette/bootstrap: >=3.0@dev
- nette/di: ^3.0.6@dev
- nette/schema: ^1.0.3@dev
- nette/tester: 2.4.3
- php-parallel-lint/php-parallel-lint: 1.3.2
- phpstan/phpstan: 1.8.3
- phpstan/phpstan-nette: 1.0.0
- phpstan/phpstan-strict-rules: 1.4.3
- shipmonk/phpstan-rules: 1.1.1
- spaze/phpstan-disallowed-calls: 2.5.0
Suggests
- nette/di: for integration with Nette DI container
README
此包最初由 damejidlo 组织 开发和发布。
包已弃用
此包被认为是已弃用的。
安装
$ composer require nepada/envy
基本用法
创建 Envy 实例
use Nepada\Envy\Envy; use Nepada\Envy\LoaderFactory; use Nepada\Envy\ValueProviders\Reader; $reader = new Reader(); $loaderFactory = new LoaderFactory($reader); $envy = new Envy($reader, $loaderFactory);
Envy
支持从 env 变量中加载最常见数据类型的方法。在加载值时,它首先进行验证(在无效输入上抛出异常),然后进行类型转换。
字符串值
// Get string from `FOO` env variable, or throw exception if not set $envy->getString('FOO'); // Get string from `FOO` env variable, or return `'default'` if not set $envy->getString('FOO', 'default'); // Get string from `FOO` env variable, or return `NULL` if not set $envy->getStringOrNull('FOO');
布尔值
支持多种表示布尔值的方式:true
/false
,yes
/no
,1
/0
(不区分大小写)。
// Get boolean from `FOO` env variable, or throw exception if not set $envy->getBool('FOO'); // Get boolean from `FOO` env variable, or return `FALSE` if not set $envy->getBool('FOO', FALSE); // Get boolean from `FOO` env variable, or return `NULL` if not set $envy->getBoolOrNull('FOO');
整数值
// Get integer from `FOO` env variable, or throw exception if not set $envy->getInt('FOO'); // Get integer from `FOO` env variable, or return `42` if not set $envy->getInt('FOO', 42); // Get integer from `FOO` env variable, or return `NULL` if not set $envy->getIntOrNull('FOO');
浮点值
// Get float from `FOO` env variable, or throw exception if not set $envy->getFloat('FOO'); // Get float from `FOO` env variable, or return `3.1415` if not set $envy->getFloat('FOO', 3.1415); // Get float from `FOO` env variable, or return `NULL` if not set $envy->getFloatOrNull('FOO');
数组
默认项目分隔符 ~\s*,\s*~
用于分割项目。
字符串值列表
// Get array of string from `FOO` env variable, or throw exception if not set $envy->getStringArray('FOO'); // Get array of strings from `FOO` env variable, or return `['foo']` if not set $envy->getStringArray('FOO', ['foo']); // Get array of strings from `FOO` env variable, or return `NULL` if not set $envy->getStringArrayOrNull('FOO');
整数值列表
// Get array of integer from `FOO` env variable, or throw exception if not set $envy->getIntArray('FOO'); // Get array of integers from `FOO` env variable, or return `[42]` if not set $envy->getIntArray('FOO', [42]); // Get array of integers from `FOO` env variable, or return `NULL` if not set $envy->getIntArrayOrNull('FOO');
浮点值列表
// Get array of float from `FOO` env variable, or throw exception if not set $envy->getFloatArray('FOO'); // Get array of float from `FOO` env variable, or return `[3.1415]` if not set $envy->getFloatArray('FOO', [3.1415]); // Get array of float from `FOO` env variable, or return `NULL` if not set $envy->getFloatArrayOrNull('FOO');
Nette DI 集成
在您的配置中注册扩展,这将注册 DI 容器中必要的服务
extensions: envy: Nepada\Bridges\EnvyDI\EnvyExtension
现在可以使用简写符号来访问 Envy
方法
parameters: loadedFromEnvVariables: foo: @envy::getString('FOO') bar: @envy::getIntArray('FOO', [1, 1, 2, 3, 5, 8, 13]) services: - type: MyService arguments: foo: %loadedFromEnvVariables.foo% bar: %loadedFromEnvVariables.bar%
自定义加载器
您可以使用完全自定义的加载值处理创建自己的加载器,例如。
use Nepada\Envy\LoaderFactory; use Nepada\Envy\ValueProviders\Reader; $reader = new Reader(); $loaderFactory = new LoaderFactory($reader); $defaultValue = ['https://example.com']; // Processor that will split items on semicolon and validate every item contains valid URL $arrayProcessor = (new ArrayProcessor()) ->withDelimiter('~;~') ->withItemValidator('url'); $loader = $loaderFactory->createLoader() ->withAddedProcessor($arrayProcessor) ->withValidator('array:1..') // make sure we're loading non-empty array ->withFallback($defaultValue); // Get non-empty list of URLs from `FOO_URLS` env variable, or `$defaultValue` if not set $urls = $loader->get('FOO_URLS');
如果默认的处理器集不足以覆盖您的用例,您可以通过实现 ProcessorInterface
来编写自己的处理器。
验证
验证基于 Nette\Utils\Validators
- 您可以针对 Nette 支持的任何类型进行验证。