PhpStorm 2024.1 ヘルプ

サービスコンテナー

Symfony アプリケーションは、サービスと呼ばれる複数のオブジェクトで構成されています。SessionDoctrineFileSystem などの一部のサービスは、Symfony を開発プラットフォームとして使用する場合に固有のものです。その他のオブジェクトは開発中のアプリケーションに固有のものである: Symfony サービスコンテナー(英語)はこれらのオブジェクトのインスタンス化、整理、取得に役立ちます: また、アプリケーションが使用できる動作や特定の値を構成できるパラメーターのコレクションも保持する

Symfony のサポート(英語)プラグインは、Symfony サービスコンテナーに登録されているサービスとパラメーターのコード補完とナビゲーションを提供し、新しいサービスの登録を支援します。

Symfony サービス用のコード補完

エディターで Ctrl+Space を押して、次のいずれかの場合にコード補完を呼び出します。

  • サービスコンテナーから登録済みのサービスを取得します。

    Symfony service name completion
  • インスタンス化されたサービスのメソッド名を補完させます。

    Symfony service methods completion
  • サービスコンテナーから登録されたパラメーターを取得します。

    Symfony service parameters completion

サービスのコードナビゲーション

サービスの宣言に移動するには、その使用箇所にキャレットを置き、Ctrl+B を押します。または、Ctrl+Click を使用します。

Navigating to Symfony service name declaration

宣言に移動するコマンドを使用すると、サービスの実装とそれが登録されているルート間を移動することもできます。例: Filesystem クラスからクラスが登録されている services.xml ファイルに移動することができます。そこから、サービスの登録済み実装またはその使用箇所に戻ることができます。

Navigating between Symfony service implementation and declaration

サービス用コードインスペクション

Symfony サポートプラグインは、サービス登録のエラーを検出するためのインスペクションを多数提供します。

Code inspections for Symfony services

サービスの登録

サービスは通常、YAML または XML 構成ファイルに対応するレコードを追加することによってサービスコンテナーに登録されます。例: Twig 拡張をサービスコンテナーに登録するには、次のレコードを追加します。

services: blogger_blog.twig.extension: class: Blogger\BlogBundle\DependencyInjection\BloggerBlogExtension tags: - { name: twig.extension }

サービス登録レコードは、最低でもサービスの名前とそれを実装するクラスで構成されます。さらに、一般に、サービスをインスタンス化するときにサービスコンテナーによって提供されるべきパラメーターのディレクティブが含まれています。

Symfony サポートプラグインは、YAML または XML 登録の作成を支援するサービスの作成ツールを提供します。

サービスを登録する

  1. コードエディターを右クリックし、コンテキストメニューからサービスの作成を選択します。

    Symfony create service command
  2. 開いているサービスジェネレーターダイアログで、クラスフィールドにサービスコンテナーに登録するクラスの FQN を入力します。

    the Symfony Service Generator dialog

    登録に必要な可能性のあるメソッドのリストが自動的に設定されます。必要に応じて、生成をクリックしてリフレッシュします。

    • サービスの作成時に、サービスコンテナーにクラス内のすべての関数のパラメーターを割り当てることができます。これは、行為チェックボックスを選択または選択解除することで規制されます。

    • サービス列では、パラメーターにインジェクションするサービスを選択できます。

  3. 対応するオプションを選択して、YAML または XML を生成するかどうかを選択します。

  4. クリップボードにコピーをクリックし、生成されたサービス登録を構成ファイル(たとえば、services.yml)に貼り付けます。