![]() |
Llamar a metodo de una clase desde el metodo de otra clase Hola Foro: Tengo un problema aqui, tengo un metodo en una clase, en ese metodo quiero llamar a un metodo de otra clase, pero no se como hacer si no lo hago desde un objeto. Algo asi: class Articulo{ var $Id; var $Nombre; var $IdMenu;function MuestraArticulo($IdArticulo){ $this -> Id = $IdArticulo; $SQL = "SELECT ID, Nombre, IdMenu FROM ARTICULOS WHERE ID = ".$this -> Id"; $resul = mysql_query($SQL, $_SESSION['cnx']); while( $fila = mysql_fetch_array( $resul ) ) { echo $fila['ID']; echo $fila['Nombre']; echo MuestraNombre($fila['IdMenu']);} } //Clase de donde saco el nombre del menu class Menu{ var $Id; var $Nombre;function MuestraNombre($IdMenu){ $this -> Id = $IdMenu; $SQL = "SELECT Nombre FROM MENUS WHERE ID = ".$this -> Id"; $resul = mysql_query($SQL, $_SESSION['cnx']); while( $fila = mysql_fetch_array( $resul ) ) { return $fila['Nombre'];} } Lo que quiero es poder obtener el nombre del menu desde otra clase, llamando al metodo correspondiente de la clase Menu desde la clase donde lo necesito. Gracias, ojala alguien me pueda dar una idea de como hacer esto, podria hacer una funcion aparte, solo asi se me ocurre pero ya no usaria el metodo que existe para esto en la clase Menu, que es lo que quiero hacer, Gracias!! Atte. Lore :adios: |
Hola Lore, Lo que vos querés es, de alguna manera, utilizar información de una clase, para el funcionamiento de otra clase. Eso no es muy complicado, si utilizamos bien las ventajas que nos ofrecen los objetos. Por lo que pude entender de tu clase, vos querés que un Artículo, muestre un Menu determinado? :S Bueno, te comento que lo mejor, es que los Objetos no tengan "lógica de presentación", o sea, que mantengas tus objetos libres de "echos", y asi poder mantener todo separado y limpio. Yo haría lo siguiente (errores de sintaxis más o menos): Código PHP: |
Hola Lorena: Si fuera el caso de que un artículo tiene un menú (¿?), entonces debe tener como atributo un objeto de la clase Menu. En el constructor instancias un Menu y lo guardas en $this->menu. Luego puedes acceder a los métodos de Menu a través de ese objeto. Pero la verdad es que la relación natural entre Artículo y Menú no la veo del todo clara. Tal vez sea mejor trabajar los objetos por separado. Saludos:adios: PD: Trata de quitar todos los "echo". Puedes utilizar un sólo método que imprima en pantalla. |
si no mal tengo entendido para llamar una funcion de otra clase bastas con hacer asi... Código PHP: |
DarioDario, tu solución es para llamar a un método "DE CLASE" de un objeto. Si tu método, por ejemplo, tuviera un $this, ya no funcionaría y daría error. Vale la aclaración para no generar confusiones. |
perdonenme, no hace mucho empiezo con esto de los objetos, gracias por la aclaracion Webstudio, y perdonen la confucion que pude haber generado... |
Foro: No estoy muy segura, pero creo que de todo lo que me comentaron, JPinedo se acerca mas a lo que quiero hacer. Jpinedo dice que: Cita:
Articulo es otra clase, que tiene un ID, un nombre de articulo y un id de menu, que representa el menu donde el articulo se encuentra, quiero en mi clase Articulo, por medio de un metodo, pasarle por parametro el ID del articulo que quiero, y me muestre el nombre del articulo, y, en lugar de mostrarme el id del menu donde esta, me muestre el nombre de este menu, es decir, acceder al metodo de menu, desde la clase articulo, Jpinedo comenta que: Cita:
Atte. Lore :adios: |
las ultimas dudas Ya quedo como tu decias JPinedo, es exacto lo que necesitaba, solo me queda la duda de dos comentarios que me hiciste: Cita:
y el otro comentario: Cita:
Gracias JPinedo! Atte Lorena :-) |
Hola Lore: Sobre la relación entre ambos objetos... si tú ves claro que un menú es un atributo de un artículo... entonces todo está bien. Lo que pasa es que yo no termino de entender qué es un menú (disculpa la brutalidad). Tal como lo explicas parece que sí puede haber una relación natural de pertenencia entre ambos... pero sería al revés. O sea, un menú que contiene artículos y no un artículo que contiene menúes. Como te digo, es una decisión tuya. Tú sabes cómo funciona tu aplicación. Lo que debes tratar es de reflejar la realidad lo mejor posible. No está mal que lo hagas com lo has hecho. ------------- Sobre lo de suprimir los "echo's", sí... hay que hacer algún método de salida como lo que planteó Webstudio. Saludos:adios: |
| La zona horaria es GMT -6. Ahora son las 19:59. |
Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.