2017-04-27 18 views
2

私は、タイプヒントクラスのメソッドに渡されるいくつかの環境変数や、整数を予期するために不平を言うコンストラクタに対処する必要があるが、 env変数は常にその内容に関係なく文字列です。環境変数の型キャスト

私は可能な限り厳密なタイプヒントを保持したいと思いますが、現在のソリューション(Symfony DotEnvなど)では、型キャストを行う可能性を考慮していないようです。

この問題の解決方法を教えてください。私が言ったように、私はクラスのヒントを緩和しないようにしたいと思いますが、env varsの処理の現状は文字列が "正しい"ものを示唆しているようには見えません。

答えて

0

私は文字列を取得することを理解するプロキシクラスのいくつかの形式を使用する傾向にありますが、出力を整数などとして提供する必要があります。

クラスの構築に入り、何らかの形のvalue-object(適切な型に変換する)を介してクラスを構築する環境変数が多数ある場合は、パラメータを単純化することもできます何が起きているのかをもう少し明白にしてください。

0

私は同僚と一緒に、parameter.phpファイル(parameters.ymlとは違って)に基づいたソリューションを作りました。ここでは、変数を取得してタイプキャストします。 :

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

それだけでなく、symfonyのチームの中に生じた同じ必要性を判明:彼らはhttps://symfony.com/blog/new-in-symfony-3-4-advanced-environment-variables

>以下の記事で紹介したようDICのYAMLファイルにタイプキャスト可能にすることによって、問題を解決しました