Cómo funciona AOP (Programación Orientada a Aspectos) en Drupal. He aprendido sobre AOP en términos de usarlo para el registro y la seguridad, pero ¿cómo se aplica a Druoal?¿Cómo funciona AOP en Drupal?
Respuesta
drupal imita paradigmas de AOP a través de ganchos, que básicamente permiten a los desarrolladores tejer en bits de código durante el flujo de ejecución. puede echar un vistazo a los ganchos que un desarrollador puede implementar here.
como un ejemplo rápido, si estuviera desarrollando un nuevo módulo basado en nodos (los nodos son el formulario de datos básico en drupal), tengo acceso instantáneo a comentarios y taxonomía sin ningún trabajo adicional de mi parte. los módulos de comentario y taxonomía tienen la capacidad de conectarse a los nodos y proporcionar esa funcionalidad adicional. entonces, en ese sentido, no tengo que dar cuenta de esas características en mi programa, pero puedo aprovechar esa flexibilidad.
Drupal es un marco "multi-paradigma", y sólo ciertas partes de él implementar "una especie de" AOP:
- Drupal 7 de render() la función, por ejemplo, convierte un conjunto de matrices anidadas en HTML de salida seleccionando plantillas apropiadas basadas en reglas de precedencia básicas: de esta manera, Drupal se comporta de forma similar a un motor de transformación XSLT, donde los archivos de plantilla de su tema juntos constituyen un archivo .xsl de entrada y el nido de matriz de entrada es la inicial. archivo xml Esto significa que hay algo elegantemente funcional en la forma en que funciona el tema.
- Además, la capa de abstracción de la base de datos D7 está cerca de la orientación de objetos "rectos", aunque como observa Larry (ver más adelante), hay una pequeña cantidad de casi AOP en esta capa OO.
El paradigma AOP de Drupal se puede visualizar mejor como controlado por eventos, y todo sucede a través del concepto de ganchos de Drupal. Por ejemplo, cuando hace lo siguiente:
- escribir un módulo llamado mimodulo
- en mymodule.module, crear una función llamada
mymodule_init()
- habilitar este módulo en Drupal
lo que eres declarar es, en pseudocódigo:
subscribe mymodule to "hook events" of type init
Cuando el núcleo de Drupal ejecuta module_invoke_all('init')
(llamados en _drupal_bootstrap_full()
- code available here) esto es Drupal diciendo
notify all subscribers to "hook events" of type init that this has occurred
by passing any relevant arguments to them
and letting them run the code they define in their hook_init()
Así, mientras que PHP es todavía un lenguaje de procedimientos - y su mymodule_init()
podría hacer todo tipo de cosas no encapsulados locos si realmente quería - Drupal todavía está a cargo . Drupal en cierto sentido decide si llamar o no a su código en primer lugar.
De esta manera, Drupal es capaz de convertir sus propias fases de ejecución en cuasi-AOP, definiendo puntos conjuntas (los module_invoke*()
funciones) y que le permite escribir sus propios pointcuts (su función mymodule_*()
. Cuya denominación la convención debe coincidir con el nombre del gancho de Drupal.)
Para obtener más información acerca de esto, y la naturaleza multi-paradigmática de Drupal especialmente, intente Larry Garfield's excellent blogpost.
- 1. ¿Cómo funciona Drupal?
- 2. Cómo solucionar Spring AOP
- 3. Spring AOP sin XML
- 4. Asesoramiento en AOP con C#
- 5. ¿Cómo instalo Drupal en Ubuntu?
- 6. Compatibilidad con AOP en Delphi
- 7. Fundamentos de AOP
- 8. Windsor Interceptors AOP & Caching
- 9. Sobrecarga de rendimiento AOP
- 10. Manejo de excepciones AOP
- 11. Aplicación de AOP
- 12. Migración de Drupal: ahora solo la página principal funciona
- 13. ¿Debo usar Drupal 6 o Drupal 7?
- 14. Javascript Librería AOP
- 15. Spring aop java.lang.NoClassDefFoundError
- 16. IoC, AOP y más
- 17. AOP incorporado en C#: ¿está en camino?
- 18. AOP primavera y Excepción Interceptar
- 19. Cómo escribir informes personalizados en Drupal
- 20. ¿Cómo crear archivos pdf en drupal?
- 21. cómo utilizar como consulta en Drupal
- 22. Cómo ocultar un campo en formato drupal
- 23. Cómo tematizar una vista en drupal
- 24. ¿Cómo importar una vista en Drupal?
- 25. Cómo agregar pestañas al frente en Drupal?
- 26. Cómo compartir datos entre diferentes hilos En C# usando AOP?
- 27. ¿Cómo introducir AOP en el desarrollo de software productivo?
- 28. Drupal: Vistas: cómo agrupar campos
- 29. Barra inclinada en drupal
- 30. ¿Utiliza AOP? ¿y para qué?