Retroceder   Foros del Web > Programación para sitios web > PHP > PHP orientado a objetos

Respuesta
 
Herramientas Desplegado
Antiguo 23-feb-2008, 07:30   #1 (permalink)
Blade_Stom ha deshabilitado el karma
 
Fecha de Ingreso: octubre-2007
Mensajes: 276
controlador-modelo

Tengo dos clases: GestorNoticias (controlador) noticia (modelo)
la clase noticia(modelo) tiene atributos propios de la noticia (idNOticia, cuerpoNoticia....)
Entonces si la vista quiere mostrar 1 noticia cooncreta, no hay problema, se lo notifica al controlador y el controlador al modelo. Entonces la clase noticia ira a la BD la cojera...la devolvera...etc...

El problema es cuando la vista notifica al GestorNoticias que quiere mostrar las primeras 50 noticias. Entonces claro, el Gestor podria ir a la clase noticia y decirle : "oye clase noticia pasame un array que contenga las 50 noticias". La clase noticia solo tendria k ir a la BD y cojer lo que le piden. Pero no creen que haciendolo así pierde sentido? Es decir, el GestorNoticias esta yendo a la clase noticia(modelo) a pedirle 50 noticias.................no lo veo muy logico...........y nose como hacerlo para que sea mas logico

entienden mi duda?

he pensado en crear en el mismo archivo noticia.php otra clase que sea listaNoticias y que tambien tenga acceso a la BD es decir, el archivo estaria formado por dos clases una class notiticia y otra class listaNoticias siendo ambas parte del modelo.

que opinan?
Blade_Stom está desconectado   Responder Citando
Antiguo 23-feb-2008, 09:09   #2 (permalink)
jerkan tiene algunos puntos positivos de karma
 
Avatar de jerkan
 
Fecha de Ingreso: septiembre-2005
Mensajes: 1.362
Re: controlador-modelo

Podrías hacer un modelo desde el que poder sacar una noticia o un array de noticias.
Código PHP:
class modeloNoticia {

    function 
getNoticiaById() {
    
// devuelve una sola noticia
    
}

    function 
getNoticiasByFecha() {
    
// devuelve un array de noticias
    
}


Un saludo
__________________
jerkan.net
jerkan está desconectado   Responder Citando
Antiguo 23-feb-2008, 10:23   #3 (permalink)
jcxnet está en el buen camino
 
Avatar de jcxnet
 
Fecha de Ingreso: octubre-2005
Ubicación: Perú
Mensajes: 335
Enviar un mensaje por AIM a jcxnet Enviar un mensaje por MSN a jcxnet Enviar un mensaje por Yahoo  a jcxnet Enviar un mensaje por Skype™ a jcxnet
Re: controlador-modelo

Bueno, en mi opinión el controlador es el intermediario entre modelo y vista; para este caso en particular, cuando la vista solicita la lista de noticias, el controlador se la pide al modelo el cual solo se encarga de devolver el listado; el controlador formatea el listado y se lo regresa a la vista. Para eso debe existir una función en el controlador que te permita realizar la interacción entre vista-controlador-modelo.
Espero que te sea de utilidad.
jcxnet esta en línea ahora   Responder Citando
Antiguo 24-feb-2008, 05:33   #4 (permalink)
Blade_Stom ha deshabilitado el karma
 
Fecha de Ingreso: octubre-2007
Mensajes: 276
Re: controlador-modelo

yaya si asi lo esto haciendo pero mi """problema"""" estaba orientada a perdida de significado.
Osea yo tengo la clase noticia la cual funciona como modelo y tieen como atributo pues....cosas referentes a la noticia. Entonces que el controlador venga a esta clase a pedirle UNA LISTA DE NOTICIAS, osea un ARRAY LLENO DE NOTICIAS.......ps me parecia k no tenia mucha logica...............es como si vas a la clase persona y le pides k te mande una lista de persona........nose.....si vas a la clase persona ps pediras cosas de una persona concreta, insertaras una persona, le cambiaras el apellido...bla bla......

por eso, lo mas seguro es que haga lo siguiente
crear un archivo modelo_persona.php (ejemplo) y dentro de este dos clases (modelo) una que sea llame persona y otra que se llame listaPersonas de manera que cada una tendra metodos que le correspondan al 100%

que tal lo veis¿
Blade_Stom está desconectado   Responder Citando
Antiguo 24-feb-2008, 08:02   #5 (permalink)
Bellenger ha deshabilitado el karma
 
Avatar de Bellenger
 
Fecha de Ingreso: noviembre-2004
Ubicación: Lima Peru
Mensajes: 542
Enviar un mensaje por MSN a Bellenger Enviar un mensaje por Skype™ a Bellenger
Alegría Re: controlador-modelo

Podrias utilizar una clase abstracta, e implementar herencia...
__________________
Un Caballero Jura Lealtad. Usa su espada para suprimir la Injusticia No Conoce el Odio y Tampoco el AMOR...
Bellenger esta en línea ahora   Responder Citando
Antiguo 09-mar-2008, 09:04   #6 (permalink)
vanetino ha deshabilitado el karma
 
Avatar de vanetino
 
Fecha de Ingreso: diciembre-2006
Ubicación: Lima, Peru
Mensajes: 20
Re: controlador-modelo

yo creo que estan por mal camino, hay un problema de diseño, solo basta con crear una clase noticias en el modelo con el cual podras trabajar siempre que se trate de manejar la noticias como una coleccion, algo como de colegio a alumnos.
Código PHP:
class Noticias{

    function 
getNoticiaById() {
    
// devuelve una sola noticia
    
}

    function 
getNoticiasByFecha() {
    
// devuelve un array de noticias
    
}

    function 
addNoticia() {
     
// agrega una noticia a la coleccion
    
}

    function 
deleteNoticia() {
     
// elimina una noticia de la coleccion de noticias 
    
}

   ...


Saludos

Vanetino
vanetino está desconectado   Responder Citando
Antiguo 10-mar-2008, 07:52   #7 (permalink)
kaS_aPPeaL está en el buen camino
 
Fecha de Ingreso: septiembre-2003
Mensajes: 80
Re: controlador-modelo

Creo que hay un pequeño problema conceptual.

Una clase modelo, modeliza un registro de la base de datos como un objeto. Es decir, la clase noticia, modeliza un registro de la tabla noticias.

Por otro lado, la clase gestorNoticias, debe actuar como capa de acceso a datos, es decir, la clase que se entiende con la base de datos para recuperar registros (o borrarlos, modificarlos o insertarlos) y devolver objetos de tipo noticia.

Y en cuanto al controlador, es lo que está por encima de todo ello. El controlador e un "ente" al que le dices, tengo estos datos y quiero hacer esto (tengo un post y quuiero guardar una noticia". Entonces el controlador te coge los datos, y hablará con la clase gestorNoticias y le dirá: "gestorNoticias, toma esta base de datos y estos datos y guarda una noticia machote".
kaS_aPPeaL está desconectado   Responder Citando
Antiguo 14-mar-2008, 14:13   #8 (permalink)
pragone está en el buen camino
 
Avatar de pragone
 
Fecha de Ingreso: diciembre-2007
Ubicación: Madrid
Mensajes: 223
Re: controlador-modelo

Blade_Storm,

La verdad no veo tan ilógico lo que indicas... aunque creo entender a lo que te refieres.
Me parece que la solución conceptual al problema que planteas está un poco relacionada con los conceptos de métodos estáticos y "normales" de las clases.

Es decir, yo no veo mal que tu clase Noticia (la que mapea los campos de la tabla) tenga adicionalmente métodos estáticos que sean para recuperar registros de la tabla.

Verás, al trabajar con la clase, si lo haces a nivel de instancia, es que estás trabajando con un registro particular, que es el comportamiento que ves como "normal" en el uso de la clase Noticia.
Sin embargo los métodos estáticos existen precisamente para cuando debes trabajar con una colección de objetos/instancias de una clase específica. Por esto el que puedas usar la clase Noticia directamente para pedirle los últimos 50 registros no me parece un error conceptual siempre que lo hagas de forma estática.

Espero te ayude.
__________________
pragone
Blog: Desarrollo, comunidad y monetización
Últimos artículos: Tips de Smarty
pragone está desconectado   Responder Citando
Respuesta
Calificación: Calificación de Tema: 1 votos, 4,00 de promedio.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 15:58.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93