私はSymfonyを使用しており、AppBundleのparameters.xmlに設定したすべてのアプリケーションパラメータを保持するサービスを作成しようとしています。symfonyすべてのバンドルパラメータをDIサービスにインジェクト
サービスにServiceContainerを注入し、その上で - > get( 'param_name')を使ってうまくいきましたが、コンテナ全体を注入することは非常に悪いことです。
サービス定義に引数として追加することなく、すべてのパラメータを自分のサービスに注入することができますか?コンテナの注入は、ほとんどの場合、アンチパターンです:
最終プロジェクト私は、サービス定義
<service id="myapp.application_parameters" class="AppBundle\DependencyInjection\Service\ApplicationParametersService">
<argument type="service" id="service_container" />
</service>
とサービスクラス
namespace AppBundle\DependencyInjection\Service;
use Symfony\Component\DependencyInjection\ContainerInterface;
class ApplicationParametersService
{
private $_container;
protected $developmentEmail;
function __construct(ContainerInterface $container)
{
$this->_container = $container;
$this->developmentEmail = $this->_container->getParameter('myapp.dev.email');
}
public function getDevEmail()
{
return $this->developmentEmail;
}