Php 环境变量类型转换

Php 环境变量类型转换,php,symfony,environment-variables,Php,Symfony,Environment Variables,我发现自己的处境是,我需要处理一些环境变量,这些变量被传递给一些类型暗示类、方法和构造函数,它们抱怨,因为它们期望(比如)一个整数,但它们收到一个字符串,因为环境变量总是字符串,不管它们的内容如何 我希望尽可能保持严格的类型提示,但是当前的解决方案(例如SyfOff-DoTunv)似乎不考虑任何类型的铸造的可能性。 你将如何着手解决这个问题?正如我所说的,我希望避免放松类类型暗示,但是env vars处理的当前状态似乎只表明字符串是“正确的”。我倾向于使用某种形式的代理类,该类理解它将获得字符串

我发现自己的处境是,我需要处理一些环境变量,这些变量被传递给一些类型暗示类、方法和构造函数,它们抱怨,因为它们期望(比如)一个整数,但它们收到一个字符串,因为环境变量总是字符串,不管它们的内容如何

我希望尽可能保持严格的类型提示,但是当前的解决方案(例如SyfOff-DoTunv)似乎不考虑任何类型的铸造的可能性。


你将如何着手解决这个问题?正如我所说的,我希望避免放松类类型暗示,但是env vars处理的当前状态似乎只表明字符串是“正确的”。

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


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

经过一些修补和研究,我和一位同事提出了一个基于parameter.php文件(与parameters.yml相反)的解决方案,在该文件中,我们可以按如下方式获取并强制转换变量:

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

事实证明,Symfony团队内部也出现了同样的需求:他们通过允许在DIC的Yaml文件中进行类型转换解决了这个问题,如下文所示>