Symfony中的可空环境变量

g6baxovj  于 2023-05-01  发布在  其他
关注(0)|答案(2)|浏览(131)

我知道env变量只是字符串。Symfony 3.4 supports env variables type casting。有没有办法通过int validator传递null值?
.env

DATABASE_PORT=
#I also tried DATABASE_PORT=null, DATABASE_PORT=~

parameters.yml

app.connection.port: '%env(int:DATABASE_PORT)%'
#I also tried env(?int, env(int?

我得到一个错误:“非数字的env变量“DATABASE_PORT”不能强制转换为int。“或“无效的env(?int:DATABASE_PORT)name:只允许“word”字符。“
在yml中,有~或null符号用于传递null,e。g:

app.connection.port: ~
kxxlusnw

kxxlusnw1#

有人在doc里问:
是否有可能定义自己的操作符?比如%env(myDecoder:API_PASSWORD)%,它将环境值解密为可用的值。

class MyDecoder implements EnvironmentOperator {
  public function resolve(string $value): string { 
    // magic stuff for decryption 
    return $value;
  }
}

答案是:
是的,您只需要创建一个实现EnvProviderInterface的服务,并将其标记为container.env_provider
您可以创建一个运算符来接受null作为int

kt06eoxx

kt06eoxx2#

尝试使用fallback参数:

app.connection.port: '%env(int:default::DATABASE_PORT)%'

相关问题