1. ホーム
  2. php

[解決済み] サービスからアプリケーションのパラメータにアクセスするには?

2023-05-29 10:10:04

質問

コントローラからアプリケーションのパラメータ( /app/config にあるもの) にアクセスします。

$this->container->getParameter('my_param')

しかし、サービスからこれにアクセスする方法がわかりません(私のサービスクラスは Symfony\Bundle\FrameworkBundle\Controller\Controller ).

このように、必要なパラメータをサービス登録にマッピングすればよいのでしょうか。

#src/Me/MyBundle/Service/my_service/service.yml
parameters:
    my_param1: %my_param1%
    my_param2: %my_param2%
    my_param3: %my_param3%

のようなものでしょうか?サービスからアプリケーションのパラメータにアクセスするにはどうしたらよいですか?


この質問 は同じように見えますが、私のは実際にそれに対する答え(コントローラからのパラメータ)であり、私はサービスからのアクセスについて話しています。

どのように解決するのですか?

他のサービスをインジェクトするのと同じように、サービス定義でパラメータを指定することで、サービスにパラメータを渡すことができます。 例えば、YAMLで

services:
    my_service:
        class:  My\Bundle\Service\MyService
        arguments: [%my_param1%, %my_param2%]

ここで %my_param1% という名前のパラメータに対応します。 my_param1 . そうすると、サービスクラスのコンストラクタは次のようになります。

public function __construct($myParam1, $myParam2)
{
    // ...
}