opxcore / config-environment
OpxCore 配置环境加载器。
Requires
- php: ^7.4
- opxcore/config-environment-interface: ^1.0.1
Requires (Dev)
- phpunit/phpunit: ^9.5.0
README
安装
composer require opxcore/config-environment
重要通知
所有环境变量都存储在静态属性中,因此任何环境实例都将有权访问相同的环境变量集。
用法
use OpxCore\Config\Environment; $environment = new Environment($path);
其中 $path 是放置环境文件的目录。
加载环境
要从文件中加载环境变量,请调用 $environment->load($filename),其中 $filename 是文件名。 所有变量都将存储在本地,不会影响 $_ENV, $_SERVER 等等。
其他参数是 load($filename, $safe, $silent)。如果 $safe 设置为 true,则如果变量已存在,则不会覆盖它们。如果 $silent 设置为 true,则不会抛出异常。如果环境文件成功处理,函数返回 true,如果出现任何错误,则返回 false。
读取环境变量
$environment->get($key, $default) 如果设置了环境变量,则返回环境变量,否则返回分配给默认值或传递给默认值的可调用对象的返回值。
$environment->has($key) 如果设置了环境变量,则返回 true,否则返回 false。
操作
$environment->set($key, $value, $safe) 将值设置为环境。如果 $safe 设置为 true,则如果变量已存在,则不会覆盖它们。传递给字符串类型的值将被解析(见下文),其他值将按原样设置。
$environment->unset($key) 从环境中删除变量。
格式
环境文件中的每一行必须包含一个值,由变量名和用 = 符号分隔的值组成。换句话说,= 符号之前的行的一部分将用作变量名,另一部分将是变量的值。
例如
APP_NAME=My awesome application
每个值将按以下规则解析
字符串
每个引用的值将被转换为非引用字符串。
DB_CONNECTION="mysql" DB_HOST="127.0.0.1"
调用 $environment->get('DB_HOST') 的结果将是 '127.0.0.1'。
布尔值
如果值是 true 或 false,则将其转换为布尔类型。
CACHE_ENABLE=true 304_RESPONSE=false
空值
空值将被设置为 null
CACHE_DRIVER=null
数组
数组必须以 [ 开始并以 ] 结束。项目必须用逗号分隔。每个项目都将按此规则解析。 不支持嵌套数组。
BROADCAST_DRIVER=[log,telegram]
数字
如果值表示任何数字格式,则将其转换为整数或浮点数。
COUNT=42 MULTIPLIER=1.05 FLOAT=0.15E-10
如果解析器无法识别值的类型,则返回原始字符串。
APP_KEY=base64:0vqkPYSbwPm3MOzdxQJ76Ps6pouZRjN5xPx3b+dm628=
调用 $environment->get('APP_KEY') 的结果将是 'base64:0vqkPYSbwPm3MOzdxQJ76Ps6pouZRjN5xPx3b+dm628='。