Actualmente estoy reescribiendo una tienda en línea, pero solo el lado del cliente, es decir, el CMS, sigue siendo en su mayoría intacto. No estoy usando un marco preconstruido, ya que el sistema tiene que mantener la compatibilidad con el CMS y tengo que tener plena libertad de la estructura del código.¿Está bien terminar utilizando clases principalmente estáticas?
El nuevo sistema está basado exclusivamente en MVC y tengo un Bootstrapper que carga controladores basados en el uri actual y los últimos modelos de uso para el trabajo real, tanto con sesiones como con la base de datos.
tl; dr Es mi primer proyecto sin un marco preconstruido.
No tengo mucha experiencia en cuanto a patrones de diseño. Sé cómo funcionan la mayoría de los populares pero nunca los han utilizado.
Ahora sospecho que el código huele porque todos mis modelos son clases que consisten puramente en métodos estáticos. No puedo encontrar ninguna ventaja de hacerlas de otra manera. De manera rutinaria necesito algunos de los métodos en varios lugares a través del código. Es decir. Necesito buscar al usuario conectado en el diseño principal, verificar los derechos de los usuarios para ver la página actual en bootstraper, mostrar el panel de usuario por el controlador. Necesitaría volver a crear una instancia de un objeto cada vez o mantener uno global si no estuviera usando estática. Tampoco habrá necesidad de más de una clase a la vez.
Me falta algo, porque aunque utilizo OOP, algunas de mis clases son contenedores sin sentido para sus métodos (y algunas veces algunas variables privadas). Podría haber estado usando PHP4 y funciones simples.
Cualquier comentario o consejo sería muy apreciado.
EDIT: a pesar de todas estas respuestas educadas, sigo sin estar convencido. Aunque probablemente sea por mi falta de experiencia, todavía no preveo que algo vaya mal con la configuración actual. Quiero decir que ni siquiera comprendo una situación en la que tenga inconvenientes debido a la arquitectura del código como lo es ahora. Espero no obtener una dura lección cuando ya es demasiado tarde para cambiar algo ...
Ninguna de las tres afirmaciones se aplica a mí. Y solo uso los datos de la sesión si es necesario usarlos de todos modos, como durante el procesamiento del usuario y del carrito de compras, e incluso entonces, los datos cruciales residen en db. No necesito entidades como 'products' o' user' tampoco. No tendrían ningún método. Lo único que tengo que hacer con un producto, por ejemplo, es obtener datos sobre él desde db. Bootstraper llama una acción de un controlador y llama a algunos métodos de los modelos para establecer y obtener los datos requeridos. No tengo más tipos de clases, excepto cosas como el contenedor de db. – raveren
@Raveren - si ese es el caso, esta es la base que debe tomar - que este sistema no sea OOP. Sé que mencionaste Los usuarios no necesitan ser una clase, pero podría ser si quisieras. Su clase de usuario un objeto de usuario => vuelve a un registro de usuario en su base de datos. – JonH
Wow eso es mucho para entender. Ojalá tuviera una relación profesional con alguien con esa experiencia, es muy difícil para mí aprender de los libros de texto, no ejemplos o prácticas del mundo real ... Opté por dejar de hacer modelos 1: 1 * para las tablas de bases de datos * porque nuestro DB fue diseñado por un imbécil y quería que la estupidez se manejara centralmente, así que sí, tengo clases de servicio para la mayoría de las entidades, como 'obsequios '. Estos manejan todas las operaciones asociadas. Francamente, no puedo ver ninguna ganancia en las clases * wrapper * para cada tabla db, incluso si la estructura es lógica ... – raveren