Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

CodeIgniter Duda de COncepto

Estas en el tema de Duda de COncepto en el foro de Frameworks y PHP orientado a objetos en Foros del Web. SUpongamos que tengo mi controlador Alumno, Cita: index.php/alumno Un modelo es una clase, y por ejemplo si yo creo mi modelo alumno, ya que en ...
  #1 (permalink)  
Antiguo 16/03/2011, 10:09
Avatar de HiToGoRoShi  
Fecha de Ingreso: abril-2008
Mensajes: 849
Antigüedad: 16 años, 7 meses
Puntos: 31
Duda de COncepto

SUpongamos que tengo mi controlador Alumno,

Cita:
index.php/alumno
Un modelo es una clase, y por ejemplo si yo creo mi modelo alumno, ya que en este modelo pondría todas las cosas que puede hacer el Alumno, ver sus notas, matricularse, retirarse del curso etc, mi duda seria esta

Tengo un controlador llamado Matricula

Cita:
index.php/matricula
Tendria que llamar obviamente al modelo alumno ? porque el alumno interactua con la matricula, o tendria que crear especificamente un modelo llamado Matricula?, ya que hay cosas que el alumno no puede hacer, como eliminar la matricula, ver lista de deudores etc, y desde el controaldor matricula ambos pueden ser llamados

Y para finalizar, en ese caso siempre tendria un controlador alumno y modelo alumno, pero si lo llamo desde el controlador me traera ERRO al instanciar dos clases del mism nombre

COmo hago puedo hacer para evitar eso, si es que hasta aca voy bien la logica, lo que suelo hacer es al controlador nombrarlo en plural, ejm

ALumnos, ya que es accedido por varios alumnos
Cita:
index.php/alumnos
  #2 (permalink)  
Antiguo 16/03/2011, 10:39
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Duda de COncepto

Recuerda que el controlador no es nada más que una clase que maneja los datos de entrada, decide que modelo va a utilizar y selecciona la vista a renderear, esa es su tarea, toda la lógica del negocio debe de ir en el modelo.

Sabiendo eso un controlador puede usar 20 modelos o 1 solo, o varios controladores usar solo 1 modelo, en eso no hay limitaciones, ya que como bien dices cada modelo es un contenedor de datos que tiene varias entidades y estas son usadas por los controladores para afectar su comportamiento y obtener la salida adecuada.

Saludos.
  #3 (permalink)  
Antiguo 16/03/2011, 10:45
Avatar de HiToGoRoShi  
Fecha de Ingreso: abril-2008
Mensajes: 849
Antigüedad: 16 años, 7 meses
Puntos: 31
Respuesta: Duda de COncepto

Gracias pero ahora me pusistes en duda otro concepto, el MODELO no es usado para manejar las consultas a base de datos, y la lógica de negocio debería ser implementada en el CONTROLADOR? en si, el modelo que hace realmente, ve la parte de PERSISTENCIA y MANEJO DE ENTIDADES?
  #4 (permalink)  
Antiguo 16/03/2011, 10:53
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Duda de COncepto

El Modelo ve toda la logica de negocio, la persistencia (si aplica) de los datos, e usar otros modelos si necesita para generar los datos necesarios.

El controlador solamente es una capa de transferencia de datos, lee el concepto "fat models, thin controllers" es un error querer implementar toda la lógica de negocio en el controlador porque eso te lleva a duplicar código.

Supongamos que tienes dos controladores que son similares ya que usan el mismo modelo pero varian dependiendo de su nivel seguridad, si toda la logica de negocio esta en ellos, tienes que repetir el código en ambos, en cambio si este pertenece al modelo te evitas ese problema y haces tu sistema más mantenible.

Te recomiendo leer esto: http://weblog.jamisbuck.org/2006/10/...ller-fat-model

Saludos.
  #5 (permalink)  
Antiguo 16/03/2011, 10:59
Avatar de HiToGoRoShi  
Fecha de Ingreso: abril-2008
Mensajes: 849
Antigüedad: 16 años, 7 meses
Puntos: 31
Respuesta: Duda de COncepto

Ok leo el link que me distes en mi casa, porque ando en el trabajo ...

otra pregunta mas, viendo los modelos de esta manera, yo tengo entendido que la capa de persistencia, solo debe encargarse de los datos , jamas debe hacer lógica, entonces como haría este caso creo un modelo alumno que se encargue de las consultas, y otro modelo que se encargue de la lógica de negocio ?
  #6 (permalink)  
Antiguo 16/03/2011, 11:13
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Duda de COncepto

Asi es pero la capa de persistencia esta dentro de la capa del modelo en el MVC. En MVC, la parte de Modelo es muy amplia ya que incluye persistencia, consultas a web services etc. lo que es el núcleo de tu aplicación.

Al controller no le debe de afectar si tu modelo consulta datos de la base de datos, o de un archivo, o de un web service, o si simplemente multiplica datos, ya que esa es la tarea del modelo.
  #7 (permalink)  
Antiguo 16/03/2011, 11:33
Avatar de HiToGoRoShi  
Fecha de Ingreso: abril-2008
Mensajes: 849
Antigüedad: 16 años, 7 meses
Puntos: 31
Respuesta: Duda de COncepto

okas tonces para finalizar las rondas y no reinvertir la rueda, como podría distribuir mi modelo

modelo
--persistencia
--logica
--webservices

Básicamente quisiera saber los nombres de las carpetas del modelo jajajaj me complico mucho la vida porque trato buscar las forma CORRECTA de realizar las cosas, por ejemplo en .NET vi que ponian asi DAL (data access layer), BL (bussiness logic), BE (bussiness entity), y en java el famoso DAO/BEANS
  #8 (permalink)  
Antiguo 16/03/2011, 12:52
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Duda de COncepto

Pues no hay una forma "correcta" tu puedes distribuir tu modelo a como lo necesites, ya que precisamente es por eso que el modelo es el core de tu aplicación, dentro de él es donde esta toda la parte que maneja tu aplicación.

Varios frameworks lo hacen de forma diferente y te crean carpetas de entrada diferente, pero no hay una forma que sea "la correcta" ya que todo depende de la aplicación que estés creando.

Saludos.
  #9 (permalink)  
Antiguo 16/03/2011, 14:05
Avatar de HiToGoRoShi  
Fecha de Ingreso: abril-2008
Mensajes: 849
Antigüedad: 16 años, 7 meses
Puntos: 31
Respuesta: Duda de COncepto

Gracias me di cuenta que estuve aplicando mal el MVC :)
  #10 (permalink)  
Antiguo 16/03/2011, 15:37
Avatar de HiToGoRoShi  
Fecha de Ingreso: abril-2008
Mensajes: 849
Antigüedad: 16 años, 7 meses
Puntos: 31
Respuesta: Duda de COncepto

Otra dudaaaaaaaaaaaaa :), el modelo de negocio puede llamar directamente e invocar al modelo de persistencia?, o estos tienen que ser llamados desde el controlador pasandole objetos, creo que yo, que debe hacerse desde el controlador para no romper la ley del MVC
  #11 (permalink)  
Antiguo 16/03/2011, 15:53
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Duda de COncepto

Debe de ser desde el modelo, precisamente si no quieres romper el MVC, ya que la capa de Modelo es para eso es el core de tu negocio, al controlador no le debe de importar (ni debe de saber) de donde el modelo esta trayendo sus datos, es responsabilidad del modelo el traerlos de un medio persistente o guardarlos en un medio persistente.

Saludos.
  #12 (permalink)  
Antiguo 16/03/2011, 20:48
Avatar de HiToGoRoShi  
Fecha de Ingreso: abril-2008
Mensajes: 849
Antigüedad: 16 años, 7 meses
Puntos: 31
Respuesta: Duda de COncepto

oe man donde aprendistes tantoo ??, una pregunta tu solo te dedicas a programar o tambien investigas mas aya de la programacion, CMMI, ITL, PMO, SCRUM, RUP, XP jejeje sorry por la pregunta toy medio huasca ahorita tuve tomando
  #13 (permalink)  
Antiguo 16/03/2011, 22:31
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Duda de COncepto

Aparte de programar ahorita estoy estudiando mucho CMMi y Six Sigma.

Saludos.
  #14 (permalink)  
Antiguo 17/03/2011, 01:53
 
Fecha de Ingreso: octubre-2009
Mensajes: 245
Antigüedad: 15 años, 1 mes
Puntos: 17
Respuesta: Duda de COncepto

Cita:
Iniciado por HiToGoRoShi Ver Mensaje
oe man donde aprendistes tantoo ??, una pregunta tu solo te dedicas a programar o tambien investigas mas aya de la programacion, CMMI, ITL, PMO, SCRUM, RUP, XP jejeje sorry por la pregunta toy medio huasca ahorita tuve tomando
Ya que quieres ir mas alla hay un libro que se llama Integrating CMMI and Agile Development habla de como pueden hacer sinergia los métodos ágiles y las practicas de CMMI, eso si necesitas tener bases del segundo.
__________________
Saludos.
  #15 (permalink)  
Antiguo 17/03/2011, 19:10
Avatar de HiToGoRoShi  
Fecha de Ingreso: abril-2008
Mensajes: 849
Antigüedad: 16 años, 7 meses
Puntos: 31
Respuesta: Duda de COncepto

Otra duda mas, basicamente mi controlador deberia comunicarse con mi capa de negocio, ya que esta llama a la capa de persistencia ??

Y otra cosa mi capa de negocio puede llamar a X clases de persistencia ?

Ya que en clases siempre me ensenaron asi:

1 BELAlumno
2 BLLAlumno
3 DALAlumno

Mi controlador llamaria al 2, el 2 encarga de llamar al 3 para una consulta que pueda tener, pero tambien podria llamar a diferentes clases , osea un DALCurso, DALProfesor ? el mismo BLLAlumno ?, y luego de eso todo es llenado en BELAlumno, pero como usa activerecord no hace falta llenar el BELAlumno porque te retonar el objeto ya
  #16 (permalink)  
Antiguo 17/03/2011, 23:01
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Duda de COncepto

Sí tu modelo se puede comunicar con otros modelos ya que estan en la misma capa y no hay problema con eso. Como te dije mas arriba la idea es que tu modelo sea lo mas rico posible.

Saludos.

Etiquetas: concepto
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:08.