MVC Llamar modelo de otra entidad – php mvc

Pregunta:


Estoy trabajando con CodeIgniter y como sabrán PHP es bastante libre y nos deja hacer muchas cosas, a veces malas practicas.

La pregunta es mas teorica que del Framework. En una arquitectura MVC, es mala practica llamar al modelo de otra entidad?
Ej:

    Controller:
    - Garantia
    - Novedad
   Modelo
    - Model_Garantia
    - Model_Novedad

Es decir, llamar desde el Controller Garantía al modelo Novedad cumpliría con los principios SOLID, de POO y MVC? O debería crear un objeto tipo Novedad y a través de ese buscar lo que necesito del Model_Novedad?

Preguntado por: Fer

marcos alberto saavedra sanabr

no es mala practica realizar consulta de otro modelos, en un proyecto usted tiene que realizar varias consulta para traer datos foráneos un ejemplo seria: la de los pedidos y venta donde tiene que traer datos como los articulos y clientes. lo que si tiene que esta bien estandarizado,en una tabla mysql en un solo controlador con el mismo nombre para evitar confusiones
llamar varios modelos

$this->load->model(array(
            'MunicipiosModel',
            'DepartamentosModel'
        ));  

Al implementar una servicio web RESTful con una arquitectura MVC con algo básico como un CRUD es necesario saber que la especificación indica que debe de llamarse en cada uno de los controladores la entidad/modelo para la que fue diseñada.

Partiendo de Los Principios de SOLID el primero es Principio de responsabilidad única que establece:

Cada módulo o clase debe tener responsabilidad sobre una sola parte de la funcionalidad proporcionada por el software y esta responsabilidad debe estar encapsulada en su totalidad por la clase.

Podemos darnos cuenta que al hacer dependiente las clases estarías generando una baja cohesión y un alto acoplamiento. Por lo que al realizar una modificación a una afectaría directamente a la otra clase.

El principal problema que tiene este enfoque RESTful es que si tienes dos Modelos uno llamado Post y otro Comment lo que indica la especificación para poder llamar a un Post con todos los Comment’s asociados sería de la siguiente manera:

GET /post/1
{
  "title": "My Post",
  "author": { 
    "firstName": "Angel",
    "lastName": "Oropeza"
  },
  "comments": [1, 2, 3, 4]
  // ... more fields here
}

GET /comment/1
{
  // ... more fields here
}
...
GET /comment/4
{
  // ... more fields here
}

Es decir, se debe de hacer una llamada para obtener el Post con id 1 y enseguida realizar una llamada a cada unos de los comentarios asociados a este Post.

Por último mencionar que algunas páginas han migrado sus servicios REST a GraphQL como GitHub. Puedes obtener más información al respecto Aquí.

Fuente

Tags:,

Add a Comment

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *