Nuevo en Symfony 5.1: Inyección automática de propiedades con tipos
Las propiedades tipadas de PHP, que se añadieron en PHP 7.4, son una de las funcionalidades más importantes que PHP ha añadido en años. En Symfony 5.1, estamos usándolas para implementar funcionalidades como la extracción de información de propiedades en el componente PropertyInfo.
Considera el siguiente ejemplo que usa propiedades tipadas:
use Twig\Environment; class SomeServiceClass { /** @required */ public Environment $twig; public function someMethod() { $this->twig->render('...'); // ... } }
En las versiones Symfony anteriores, este ejemplo no funcionaba porque el servicio
Twig no se inyectaba correctamente. Sin embargo, en Symfony 5.1 este ejemplo si
que funciona como se espera. El motivo es que Symfony 5.1 inyecta automáticamente
todas las propiedades públicas que están tipadas con clases relacionadas con
servicios y que incluyan la anotación @required
.
Cosas a tener en cuenta:
- Solamente se inyectan las propiedades públicas; las propiedades protegidas y privadas no se inyectan nunca para evitar confusiones.
- En la práctica, esta funcionalidad es equivalente a la inyección vía setter, que tiene muchos inconvenientes y solo debería utilizarse en escenarios concretos.
En cualquier caso, recuerda que esta funcionalidad es solo una más de las herramientas que te da Symfony para automatizar la creación de objectos y servicios. Si no encaja en tu forma de desarrollar aplicaciones, sigue usando la inyección tradicional de servicios basada en constructores y propiedades privadas.
Esta funcionalidad fue contribuida por Sébastien Morel en el pull request #34769.
Fuente: New in Symfony 5.1: Autowire public typed properties
Comentarios
Proyectos Symfony destacados
La forma más sencilla de generar el backend de tus aplicaciones Symfony. Ver más
Síguenos en @symfony_es para acceder a las últimas noticias.