kar*_*ser 5 environment-variables symfony
我知道 env 变量只是字符串。Symfony 3.4支持环境变量类型转换。有没有办法通过 int 验证器传递空值?
.env
DATABASE_PORT=
#I also tried DATABASE_PORT=null, DATABASE_PORT=~
Run Code Online (Sandbox Code Playgroud)
参数.yml
app.connection.port: '%env(int:DATABASE_PORT)%'
#I also tried env(?int, env(int?
Run Code Online (Sandbox Code Playgroud)
我收到错误消息:“无法将非数字环境变量“DATABASE_PORT”转换为 int。或“无效的 env(?int:DATABASE_PORT) 名称:只允许使用“单词”字符。”
在 yml 中有 ~ 或空符号用于传递空值,例如:
app.connection.port: ~
Run Code Online (Sandbox Code Playgroud)
有人在文档中问:
是吗?或者是否可以定义自己的运算符?就像
%env(myDecoder:API_PASSWORD)%
,它将把环境值解密成可用的东西。
class MyDecoder implements EnvironmentOperator {
public function resolve(string $value): string {
// magic stuff for decryption
return $value;
}
}
Run Code Online (Sandbox Code Playgroud)
答案是:
是的,您只需要创建一个实现
EnvProviderInterface
并用container.env_provider
.
您可以创建一个运算符来null
接受int