2 min readCalm pace · scan the outline anytime

Symfony composition root

DI / wiring only — config/services*.yaml + bundle Extension.

Symfony composition root

Host: Symfony 8.1.x (PHP ≥ 8.4) · Researched 2026-08
One-shot: /apply/symfony.full.md · Short: /symfony

Composition root = DI configuration and optional bundle Extension / compiler passes — wiring only.

Typical places

  • config/services.yaml and config/services/{module}.yaml
  • Bundle Resources/config/services.php
  • Autowire Infra/UI; bind Domain ports explicitly to ACL/persistence adapters

Example

services:
  App\Ordering\Domain\Ports\Acl\WarehouseAvailabilityPortInterface:
    alias: App\Ordering\Infrastructure\ExternalServices\WarehouseAvailabilityAclAdapter

Do not put business rules in compiler passes.

Modular Hexagonal Domain-Driven Design
Core 1.0.0-draft