Soy un programador de Java que intenta investigar CakePHP: actualmente tengo un problema con la estructura/diseño de la aplicación. No pude entender dónde poner la lógica central de la aplicación.CakePHP - dónde poner la lógica del servicio
Cuando estoy desarrollando en JavaEE, enfoque común parece siguientes:
clases modelo son granos simples que representan entidades de datos (productos, personas, etc) - en su mayoría como estructuras de datos con getters/setters;
Las clases de controlador son clases lo suficientemente simples que agregan datos necesarios y los inyectan en una plantilla de Vista dedicada que luego se envía al usuario;
DAO (DataAccessObject) o las clases de repositorio son aquellas que pueden cargar y almacenar entidades en la base de datos;
Las clases de servicio son generalmente singletons que contienen ciertos métodos lógicos de negocios; estos son llamados por controladores, por otros servicios o por acciones programadas, por otro lado llaman métodos DAO/Repository para buscar o modificar datos.
Por ejemplo si tengo entidades Person
, Product
y Order
, cuando el usuario selecciona algún producto y clics "puso en mi compra/cesta" new Order
para este Person
debe ser creado y esto Product
debe añadirse a esta Order
(podemos verificar que Person
no está mal deudor y que Product
está presente en la tienda, etc.) - todo este trabajo se realiza en los métodos de OrderService
llamados por algún controlador.
Por lo general algún tipo de COI (Inversión de Control) se utiliza para que todos los servicios y controladores tienen enlaces a los servicios necesarios etc.
Ahora estoy un poco desconcertado sobre cómo todo esto se hace en CakePHP. ¿Dónde debería poner esta lógica comercial, etc.?
Gracias por su explicación. La mención del patrón ActiveRecord hace que las cosas me resulten un poco más claras. En cuanto a su opinión personal, ¿qué frameworks de PHP cree que son mejores siguiendo la idea de MVC y las buenas prácticas? –
@RodionGorkovenko, actualmente el mejor, en lo que respecta a la práctica de codificación, se considera Symfony2. Pero es como ser el tipo más inteligente en la clase de recuperación. Y Sf2 es [no es un marco MVC] (http://fabien.potencier.org/article/49/what-is-symfony2). Pero deberías ser capaz de usar el patrón de diseño MVC con él. La mayoría de los frameworks PHP, que pretenden ser "frameworks MVC", están siguiendo la interpretación RubyOnRails de MVC (ver es plantilla y el modelo es ORM), con todas las desventajas incluidas. –
Me encanta tu respuesta @ tereško. Por favor, sigan así! –