it-swarm-es.com

Las mejores prácticas para construir módulos usando clases

Estoy buscando comenzar a construir mis módulos como clases ahora que lazy/auto-load está en Drupal 7), y me encantaría ver algunos módulos (contrib o core) que están funcionando un gran trabajo.

¿Hay una manera creativa de integrar una clase como ganchos? ¿Implemento cada característica como un complemento de ctools?

Cualquier transeúnte debe tener en cuenta que D7 tiene una nueva files[] declaraciones en el módulo .info archivos para clases/interfaces de carga automática/diferida: Escritura de archivos .info (Drupal 7.x) .

La siguiente es una buena lectura para obtener las motivaciones y la constitución (por así decirlo) de la comunidad Drupal programación de Drupal desde una perspectiva orientada a objetos .

19
electblake

n módulo no es una clase por Crell es lo que debes leer primero.

La mayor parte OOP parte en Drupal 7 es la nueva capa de abstracción de la base de datos (diseñada por el mismo Crell y otros). Eso implementa muchos patrones que pueden y deberían ser reutilizado.

Por ejemplo:

Algo que es aún discutido controversialmente es Ocultar información . DBTNG lo implementa haciendo que las propiedades de clase estén protegidas y no permita el acceso directo. Por otro lado, tenemos hook_query_alter () y se pueden cambiar casi libremente con varios métodos por referencia getter .

16
Berdir

Esta es una pregunta interesante.

La idea de un módulo Drupal como clase es muy interesante. Sin embargo, incluso en los módulos D7 simplemente implementa funciones de enlace que se verifican por nombre, por lo que incluso si crea una clase para su módulo, todavía necesita implementar funciones de enlace para invocarlas.

Sin embargo, muchos módulos usan clases internamente y exponen la funcionalidad a través de estas clases. El ejemplo más obvio son las vistas. Así que ese puede ser un buen lugar para buscar. Sin embargo, tenga en cuenta que muchos módulos usan clases a su manera, por lo que lo que aprende al mirar las vistas puede no ser siempre aplicable.

3
Jeremy French

La API de entidad (el módulo contrib) le permite declarar una "clase de entidad" para cada uno de sus tipos de entidad, por lo que todo el código relacionado con su entidad (crear, cargar, guardar, acceder, etc.) puede ir en una clase (vea cómo Organic Grupos lo hace, por ejemplo).

Dicho eso, no te excedas. Los complementos de ctools son buenos cuando los necesita (está escribiendo las próximas Vistas, Paneles o Reglas), pero usar clases en todas partes solo por pureza ideológica no le servirá de mucho.

2
Bojan Zivanovic