New in Symfony 3.4: debug:autowiring command
October 26, 2017 • Published by Javier Eguiluz
Warning: This post is about an unsupported Symfony version. Some of this information may be out of date. Read the most recent Symfony Docs.
Service autowiring was introduced as an experimental feature in Symfony 2.8. In the following Symfony versions, we improved it so much that we decided to enable it by default in Symfony 3.3.
One of the main features of autowiring is that you can type-hint the arguments of the class constructors or controller methods and Symfony automatically injects the services associated with those type-hinted classes.
This saves you most of the previously needed service configuration, but requires
you to know the right type-hint to use. In previous Symfony versions, you could
execute the debug:container --types
command to get that information. However,
in Symfony 3.4 we added a new dedicated debug:autowiring
command which is
much easier to remember and provides the same information more nicely.
For example, if you run this command in the Symfony Demo application, you'll get the following results:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
$ ./bin/console debug:autowiring
Autowirable Services
====================
The following classes & interfaces can be used as type-hints when autowiring:
App\Command\AddUserCommand
App\Command\DeleteUserCommand
App\Command\ListUsersCommand
App\Controller\Admin\BlogController
App\Controller\BlogController
App\Controller\SecurityController
App\EventSubscriber\CheckRequirementsSubscriber
App\EventSubscriber\CommentNotificationSubscriber
...
Symfony\Component\Validator\Validator\ValidatorInterface
alias to debug.validator
Twig\Environment
alias to twig
You can also provide an argument to filter the list of autowirable services:
1 2 3 4 5 6 7 8 9 10 11 12
$ ./bin/console debug:autowiring log
Autowirable Services
====================
The following classes & interfaces can be used as type-hints when autowiring:
(only showing classes/interfaces matching log):
App\Controller\Admin\BlogController
App\Controller\BlogController
Psr\Log\LoggerInterface
alias to monolog.logger
Help the Symfony project!
As with any Open-Source project, contributing code or documentation is the most common way to help, but we also have a wide range of sponsoring opportunities.
Comments are closed.
To ensure that comments stay relevant, they are closed for old posts.