Symfony
- Use attributes for routing (`#[Route]`), dependency injection (`#[Autowire]`), and validation (`#[Assert\NotBlank]`). Use the service container — autowire by type-hinting in constructors. Use Doctrine ORM for persistence.
Symfony
- Use attributes for routing (`#[Route]`), dependency injection (`#[Autowire]`), and validation (`#[Assert\NotBlank]`). Use the service container — autowire by type-hinting in constructors. Use Doctrine ORM for persistence.
- Use Symfony Forms for input handling with built-in CSRF and validation. Use the Event Dispatcher for decoupled cross-cutting concerns. Use Voters for authorization logic (`VoterInterface`). Use Messenger for async command/event handling with transports (AMQP, Redis, Doctrine). Configure with environment variables and `services.yaml` for service definitions.