【问题标题】:environment variables type casting环境变量类型转换
【发布时间】:2017-09-24 23:58:33
【问题描述】:

我发现自己处于需要处理一些环境变量的情况,这些环境变量传递给一些类型提示的类方法和构造函数,这些方法和构造函数抱怨,因为他们期望一个整数,但他们收到一个字符串,如 env vars 始终是字符串,无论其内容如何。

我希望尽可能保持严格的类型提示,但当前的解决方案(例如 Symfony DotEnv)似乎甚至没有考虑进行任何类型转换的可能性。

您将如何解决这个问题?正如我所说,我想避免放松类类型提示,但 env vars 处理的当前状态似乎没有表明任何东西,但字符串是“正确的”。

【问题讨论】:

    标签: php symfony environment-variables


    【解决方案1】:

    我倾向于使用某种形式的代理类,它知道它将获得一个字符串,但必须以整数等形式提供输出。

    如果有许多环境变量进入类的构造,通过某种形式的值对象将它们放入(这也将它们转换为适当的类型),也可以简化参数列表,并使其对正在发生的事情更加明显。

    【讨论】:

      【解决方案2】:

      经过一些修补和研究,我和一位同事提出了一个基于 parameter.php 文件(而不是 parameters.yml)的解决方案,我们将在其中获取并就地类型转换变量,如下所示:

      $container->setParameter('foo.bar', (int) getenv('FOO_BAR'));

      事实证明,Symfony 团队也出现了同样的需求:他们通过允许在 DIC 的 Yaml 文件中进行类型转换解决了这个问题,如下文所述 >https://symfony.com/blog/new-in-symfony-3-4-advanced-environment-variables

      【讨论】:

        猜你喜欢
        • 2020-03-28
        • 1970-01-01
        • 2016-08-08
        • 2011-07-03
        • 2013-09-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多