Symfony 中可为空的环境变量

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)

Gre*_*rme 1

有人在文档中问:

是吗?或者是否可以定义自己的运算符?就像 %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