#
ドキュメント

Document

自分のための備忘録です。

Service Container / Dependency Injection

Service Container は Dependency Injection を使用してサービスを構築する。
Service Container は config/services.yaml で設定する。

autowire プロパティ( config/services.yaml )が有効(デフォルトで有効)なら設定なしで type-hint に応じて自動でサービスを構築する。 autowire はサービス(クラス)ごとに config/services.yaml で有効・無効を設定できる。
autowire を無効にして Dependency Injection を明示することもできる。

services.yml サンプル

parameters:
    env_sample: '%env('ENV_SAMPLE')%'

services:
    # default configuration for services in *this* file
    _defaults:
        autowire: true      # Automatically injects dependencies in your services.
        autoconfigure: true # Automatically registers your services as commands, event subscribers, etc.

    # makes classes in src/ available to be used as services
    # this creates a service per class whose id is the fully-qualified class name
    App\:
        resource: '../src/'
        exclude:
            - '../src/DependencyInjection/'
            - '../src/Entity/'
            - '../src/Kernel.php'

    # add more service definitions when explicit configuration is needed
    # please note that last definitions always *replace* previous ones

    service_sample:
        class: App\Service\Sample:
        argument: # construct injection
            $envSample: '%env_sample%'
    App\Service\MyService:
        arguments: # construct injection
            $serviceSample: '@service_sample'

ドキュメント

サービスの Public / Private