@@ -214,11 +214,65 @@ method::
214
214
}
215
215
}
216
216
217
+ To go even further, the ``SensitiveElement `` attribute can be updated to be
218
+ usable on methods::
219
+
220
+ // src/Attribute/SensitiveElement.php
221
+ namespace App\Attribute;
222
+
223
+ #[\Attribute(\Attribute::TARGET_CLASS | \Attribute::TARGET_METHOD)]
224
+ class SensitiveElement
225
+ {
226
+ // ...
227
+ }
228
+
229
+ We should now update the call to
230
+ :method: `Symfony\\ Component\\ DependencyInjection\\ ContainerBuilder::registerAttributeForAutoconfiguration `
231
+ to support ``ReflectionMethod ``::
232
+
233
+ // src/Kernel.php
234
+ use App\Attribute\SensitiveElement;
235
+
236
+ class Kernel extends BaseKernel
237
+ {
238
+ // ...
239
+
240
+ protected function build(ContainerBuilder $container): void
241
+ {
242
+ // ...
243
+
244
+ $container->registerAttributeForAutoconfiguration(SensitiveElement::class, static function (
245
+ ChildDefinition $definition,
246
+ SensitiveElement $attribute,
247
+ // we update the union type to support multiple type of reflection
248
+ // you can also use the "\Reflector" interface
249
+ \ReflectionClass|\ReflectionMethod $reflector): void {
250
+ if ($reflection instanceof \ReflectionMethod) {
251
+ // ...
252
+ }
253
+ }
254
+ );
255
+ }
256
+ }
257
+
258
+ .. tip ::
259
+
260
+ You can also define an attribute to be usable on properties and parameters with
261
+ ``Attribute::TARGET_PROPERTY `` and ``Attribute::TARGET_PARAMETER ``, then support
262
+ ``ReflectionProperty `` and ``ReflectionParameter `` in your
263
+ :method: `Symfony\\ Component\\ DependencyInjection\\ ContainerBuilder::registerAttributeForAutoconfiguration `
264
+ callable.
265
+
217
266
.. versionadded :: 5.3
218
267
219
268
The :method: `Symfony\\ Component\\ DependencyInjection\\ ContainerBuilder::registerAttributeForAutoconfiguration `
220
269
method was introduced in Symfony 5.3.
221
270
271
+ .. versionadded :: 5.4
272
+
273
+ The support for autoconfigurable methods, properties and parameters was
274
+ introduced in Symfony 5.4.
275
+
222
276
Creating custom Tags
223
277
--------------------
224
278
0 commit comments