¿Puede alguien explicar qué es un compilación?Symfony2 explicación de CompilerPass?
Respuesta
CompilerPass
implementaciones son algunos tipos de oyentes que se ejecutan después de que el contenedor de inyección de dependencias se crea a partir de archivos de configuración y antes de que se guarde como PHP simple en caché. Se usan para construir algunas estructuras que requieren acceso a definiciones de recursos externos o necesitan alguna programación que no está disponible en la configuración XML/YAML. Puede considerarlos como "filtros finales" que pueden modificar el DIC completo.
Consideremos un TwigBundle y es TwigEnvironmentPass. Lo que hace es bastante simple:
- buscar una referencia a
twig
servicio (definido como<service id="twig" class="..." ...>
) - Encuentra todos los servicios que ha sido etiquetado con
twig.extension
etiqueta. Para hacer eso, tiene que trabajar en DIC completo (creado a partir de archivos de configuración XML) ya que esos servicios pueden definirse en cualquier paquete. - Crea un código personalizado para el método de creación de servicios.
Como resultado final se generará el siguiente código:
protected function getTwigService()
{
$this->services['twig'] = $instance = new \Twig_Environment($this->get('twig.loader'), ...);
// THIS HAS BEEN ADDED THANKS TO THE TwigEnvironmentPass:
$instance->addExtension(new \Symfony\Bundle\SecurityBundle\Twig\Extension\SecurityExtension($this->get('security.context')));
$instance->addExtension(new \Symfony\Bundle\TwigBundle\Extension\TransExtension($this->get('translator')));
$instance->addExtension(new \Symfony\Bundle\TwigBundle\Extension\TemplatingExtension($this));
$instance->addExtension(new \Symfony\Bundle\TwigBundle\Extension\FormExtension(array(0 => 'TwigBundle::form.html.twig', 1 => 'SiteBundle::widgets.html.twig')));
$instance->addExtension(new \MyProject\SiteBundle\Twig\Extension\MyVeryOwnExtensionToTwig($this));
return $instance;
}
¡Buena explicación, gracias! – acme
- 1. GAS: Explicación de .cfi_def_cfa_offset
- 2. Uso de clipRect - explicación
- 3. Explicación de Android Xfermode
- 4. Explicación de contribute_to_class
- 5. Explicación de POCO
- 6. Tamiz de Atkin explicación
- 7. Explicación de NHibernate HiLo
- 8. Explicación de Func
- 9. R explicación de redondeo
- 10. explicación concisa de Core.logic
- 11. Explicación y uso de JSONP
- 12. Explicación de este nuevo estado()
- 13. Explicación de la sintaxis Doctype
- 14. Explicación de “atar el nudo”
- 15. Explicación de presentación-abstracción-control
- 16. Explicación de la terminología BASE
- 17. Explicación de int? vs int
- 18. Explicación de OpenMP y MPI
- 19. ¿Explicación del sitio de llamada?
- 20. Explicación del patrón de visitante
- 21. Explicación/solución de Deadlock Delphi
- 22. Aritmética de precisión arbitraria Explicación
- 23. Explicación de la tabla sqlite_stat1
- 24. Explicación de Minimax "para dummies"
- 25. Explicación de [] .slice.call en javascript?
- 26. Django disposición de directorios explicación
- 27. Emacs: explicación de font-lock
- 28. Explicación de cacao uso @selector
- 29. Mysql explicación de interbloqueo necesario
- 30. Algoritmo Quickselect - Explicación simplificada
no veo que una pregunta acerca de lo que hace es demasiado CompilerPass localizada. –