File tree 1 file changed +23
-3
lines changed
1 file changed +23
-3
lines changed Original file line number Diff line number Diff line change @@ -77,12 +77,32 @@ argument of type ``service_closure``:
77
77
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
78
78
79
79
use App\Service\MyService;
80
- use Symfony\Component\DependencyInjection\Argument\ServiceClosureArgument;
81
- use Symfony\Component\DependencyInjection\Reference;
82
80
83
81
return function (ContainerConfigurator $configurator) {
84
82
$services = $configurator->services();
85
83
86
84
$services->set(MyService::class)
87
- ->args([new ServiceClosureArgument(new Reference('mailer'))]);
85
+ ->args([service_closure('mailer')]);
86
+
87
+ // In case the dependency is optional
88
+ // $services->set(MyService::class)
89
+ // ->args([service_closure('mailer')->ignoreOnInvalid()]);
88
90
};
91
+
92
+ Using Service Closures in Compiler Passes
93
+ -----------------------------------------
94
+
95
+ In :doc: `compiler passes </service_container/compiler_passes >` you can create
96
+ a service closure by wrapping the service reference into an instance of
97
+ :class: `Symfony\\ Component\\ DependencyInjection\\ Argument\\ ServiceClosureArgument `::
98
+
99
+ use Symfony\Component\DependencyInjection\Argument\ServiceClosureArgument;
100
+ use Symfony\Component\DependencyInjection\ContainerBuilder;
101
+ use Symfony\Component\DependencyInjection\Reference;
102
+
103
+ public function process(ContainerBuilder $container): void
104
+ {
105
+ // ...
106
+
107
+ $myService->addArgument(new ServiceClosureArgument(new Reference('mailer')));
108
+ }
You can’t perform that action at this time.
0 commit comments