【问题标题】:nullable environment variables in SymfonySymfony 中的可空环境变量
【发布时间】:2018-04-04 08:38:05
【问题描述】:

我知道环境变量只是字符串。 Symfony 3.4 supports env variables type casting。 有没有办法通过 int 验证器传递 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?

我收到一个错误:“非数字环境变量“DATABASE_PORT”无法转换为 int。”或“无效的 env(?int:DATABASE_PORT) 名称:只允许使用“单词”字符。”

在 yml 中有 ~ 或 null 符号用于传递 null,例如:

app.connection.port: ~

【问题讨论】:

    标签: symfony environment-variables


    【解决方案1】:

    有人在文档中问:

    是否可以,或者是否可以定义您自己的运算符?喜欢 %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

    【讨论】:

    • 谢谢,这是有道理的。我在想它是否已经实施了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-17
    • 1970-01-01
    • 2017-02-19
    • 1970-01-01
    • 2016-10-02
    • 2012-05-25
    • 1970-01-01
    相关资源
    最近更新 更多