He estado codificando durante años y me he encontrado en un punto de frustración. Estoy trabajando en un nuevo servicio basado en web que también tiene una interfaz de usuario y se desarrollará desde cero. Utilizará algunos componentes de código abierto, pero es principalmente algo nuevo por derecho propio.PHP/JavaScript Patrones de diseño para infosystems basados en web
Pero aquí está mi problema. La construcción de un sistema de este tipo significa la construcción de todos esos componentes:
- PHP backend
- vistas HTML
- estilos CSS
- JavaScript front-end
- AJAX conexiones asíncronas
quiero todos ellos siguen el mismo 'patrón', de forma que un módulo en el sistema se compone de una carpeta o un conjunto de archivos que incorpora todos los c componentes dentro de ese módulo.
Pero estoy teniendo un momento difícil con la arquitectura para que me guste. Esto es lo que tengo hasta ahora:
- Todo el sistema principal está escrito más o menos en PHP procedural. Esto resuelve la URL de solicitud, se trata de almacenamiento en caché, registro y depuración y cargas en otros componentes.
- PHP, al compilar la página, se carga en archivos javascript específicos del módulo, archivos CSS, archivos HTML y otros componentes basados en el módulo actual. Esto significa que cada módulo es lo más liviano posible, mientras que se puede ampliar sin embargo en función de las necesidades actuales de los módulos.
- El sistema también incorpora componentes OOP de objetos (como "usuarios" u otro tipo de clases) que se pueden usar en todo el sistema.
- El sistema está construido con principios de MVC, aunque sin OOP.
Pero me siento realmente -dirty- por haber construido el sistema principal de forma procedural. Empecé a escribirlo en OOP al principio, pero me encontré con dolores de cabeza debido a tener que hacer que todo encajara en el mismo sistema. Era OOP, pero estaba estrechamente acoplado, lo que no me gustó mientras se escribía la forma de OOP, los componentes realmente no eran tan independientes o eran simplemente una molestia de manejar.
¿Hay algún patrón o guía que pueda seguir para obtener un mejor resultado? Lo que me gusta del sistema actual es que puedo llamar a cualquier cosa, vistas previas a la vista de PHP o HTML, estilo CSS, funciones adicionales de Javascript y comunicación AJAX por demanda, manteniendo el footpring maravillosamente pequeño, pero parece sucio. Incluso uso una conexión de base de datos global para la base de datos (aunque es un objeto global).
¿Alguna idea? No sería un problema en absoluto si fuera solo un idioma, pero tratar de hacer que todo funcione en conjunto es un poco dolor de cabeza.
Gracias!
¿Ha investigado cualquiera de los miles de marcos de PHP/sistemas CMS/etc? Hay muchos ejemplos de cómo esto se puede hacer por ahí. – Mat
Es muy difícil responder a su pregunta porque no presenta ningún problema real. Actualmente estoy trabajando en un sistema como el uno pero fuera de curso con algunas diferencias. Estoy usando MVC/OOP. No puedo imaginar que lo estés manejando procesalmente. Creo que hasta que su proyecto tenga algunos límites, no debería haber ningún problema en OOP. –
Puede consultar Patrones de arquitectura de aplicaciones empresariales, patrones de GoF, etc. e implementarlos usted mismo. Sin embargo, la respuesta más fácil (y más obvia) es ver cómo los marcos (que ya han enfrentado este problema) han implementado estos patrones y (a) usan el marco o (b) adaptan los enfoques del marco en su aplicación. Busque marcos de código abierto en su paradigma elegido, observe cómo hacen las cosas y vea qué chistes con su aplicación. –