Symfonyではservices.yamlの中でenvの指定をすることが出来ます。
1
2
|
services:
database_url: '%env(DATABASE_URL)%'
|
こんな感じに指定してた場合にCompilerPassで参照すると文字列として返ってきてしまいます。
1
2
3
4
5
6
7
8
|
<?php
class TestPass implements CompilerPassInterface
{
public function process(ContainerBuilder $container)
{
$url = $container->getParameter('database_url')
}
}
|
この場合$url
には%env(DATABASE_URL)%
が入ってしまい、本来ほしかった.env
で設定された値は取得できません。
これを解決するにはresolveEnvPlaceholders
メソッドを使います。
1
2
3
4
5
6
7
8
|
<?php
class TestPass implements CompilerPassInterface
{
public function process(ContainerBuilder $container)
{
$url = $container->resolveEnvPlaceholders($container->getParameter('database_url'), true)
}
}
|
これで.env
で設定したDATABASE_URL
の値を利用することができます。
参考
Can not read env()-parameter in a Compiler Pass #22456