2008-10-20 14 views
31

Estoy trabajando en un CMS personalizado para mi propio uso y estaba pensando en implementar un sistema de complementos para poder extender el código un poco más fácil. Sin embargo, tengo problemas para conceptualizar la arquitectura y el diseño.construir un sistema de complemento con php

Sé que podría pasar por algunos programas de código abierto que implementan características similares, pero esto es realmente académico en este momento, así que realmente no quiero pasar demasiado tiempo investigando código extraño.

¿Alguien tiene alguna buena idea de cómo proceder? Si alguien pudiera describir cómo algunos de los programas más populares lo hacen, sería perfecto.

+0

¿Puede proporcionarnos sus propios comentarios para esta pregunta? Ha pasado un tiempo desde que hizo esta pregunta y me interesa saber cuáles son los aspectos más importantes que aprendió de su propia experiencia escribiendo CMS personalizados de php. –

Respuesta

31
  1. Definir la funcionalidad que desea que los plugins se conectan a (es decir, qué van a hacer y sobre qué)
  2. definir una jerarquía de clases en la que los plugins se ajustan, como, todo el artículo mangling plugins debe heredar de ArticleMangler
  3. definir una ubicación física para los plugins, como/plugins
  4. todos los plugins de importación presentes en la ubicación
  5. utilizar cualquiera Decorator o Observer patrones para inyectar el comportamiento del plugin o para notificar a los plugins de los acontecimientos ocurrencia. Strategy podría ser aplicable en algunos casos también.

PHP hace esto bastante fácil a un costo potencial de hacer un lío si no tiene cuidado. Me gusta el método Observer, donde los complementos se registran en un administrador de complementos que les informa de lo que sucedió y esperan a que suceda la acción.

Si no confías en los complementos, entonces deberías agregar controles de agregar sobre qué eventos vas a permitir que se registre cualquier complemento.

+0

Para las personas interesadas, he aquí una [lista de los patrones de diseño más utilizados] (https://github.com/domnikl/DesignPatternsPHP). – tleb

Cuestiones relacionadas