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