@@ -77,12 +77,32 @@ argument of type ``service_closure``:
7777 namespace Symfony\Component\DependencyInjection\Loader\Configurator;
7878
7979 use App\Service\MyService;
80- use Symfony\Component\DependencyInjection\Argument\ServiceClosureArgument;
81- use Symfony\Component\DependencyInjection\Reference;
8280
8381 return function (ContainerConfigurator $configurator) {
8482 $services = $configurator->services();
8583
8684 $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')->nullOnInvalid()]);
8890 };
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+ }