2017-04-27 99 views
2

我發現自己處於需要處理一些環境變量的情況,這些環境變量傳遞給某些類型暗示類方法和構造函數,這些方法和構造函數抱怨,因爲它們期望一個整數,但他們收到字符串,因爲env變量總是字符串,不管它們的內容。環境變量類型鑄造

我想盡可能保持嚴格的類型提示,但目前的解決方案(如Symfony DotEnv)似乎甚至沒有考慮過進行任何類型轉換的可能性。

你將如何去解決這個問題?正如我所說的,我想避免放寬班級類型暗示,但目前的環境變量處理似乎沒有提示任何內容,但字符串是「正確的」。

回答

0

我傾向於使用某種形式的代理類,它理解它會得到一個字符串,但必須提供輸出爲整數等。

如果有許多環境變量進入類的構造中,通過某種形式的值對象(它們也會將它們轉換爲適當的類型),也可以簡化參數列表,並使它對於發生的事情更加明顯。

0

經過一番修改和研究之後,我和一個同事想出了一個基於parameter.php文件(與參數.yml相對)的解決方案,我們將在這裏獲取並按照如下方式對變量進行類型轉換:

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

原來一樣需要Symfony的團隊中出現,以及:他們允許的類型轉換在DIC的YAML文件,提出了以下文章>https://symfony.com/blog/new-in-symfony-3-4-advanced-environment-variables

在解決問題