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

Llamar función de un objeto propiedad de una clase

Estas en el tema de Llamar función de un objeto propiedad de una clase en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Esto es algo que nunca he sabido cómo hacerlo, o si simplemente no se puede hacer en php... A ver, tengo una clase cuya propiedad ...
  #1 (permalink)  
Antiguo 16/10/2008, 09:39
 
Fecha de Ingreso: marzo-2008
Mensajes: 207
Antigüedad: 16 años, 1 mes
Puntos: 0
Llamar función de un objeto propiedad de una clase

Esto es algo que nunca he sabido cómo hacerlo, o si simplemente no se puede hacer en php...

A ver, tengo una clase cuya propiedad es un objeto de otra clase y quiero usar uno de sus métodos dentro de dicha clase. Por si es mucho lío, lo pongo en código, que así se entiende mejor ;)

Código PHP:
class ObjetoA
{
   private 
$ObjetoB;
   
   public function 
__construct($ObjetoB)
   {
        
$this->ObjetoB $ObjetoB;
   }   

   public function 
usarObjetoB()
   {
         return 
$this->ObjetoB->getMensaje();
   }

Y ahora mi pregunta: ¿Se puede hacer esto $this->ObjetoB->getMensaje();?

Es que si no, la única forma que se me ocurre es hacer algo así:

Código PHP:
   public function usarObjetoB()
   {
         
$NuevoObjetoB $this->ObjetoB;
         return 
$NuevoObjetoB->getMensaje();
   } 
Y la verdad, no lo veo nada optimizado...

¿Se usa acaso otra sintaxis diferente? Es que hasta ahora, siempre que he escrito líneas como la del primer ejemplo, me ha dado error. ¿Alguna idea?

Gracias ;)
  #2 (permalink)  
Antiguo 16/10/2008, 10:35
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Llamar función de un objeto propiedad de una clase

Hola Masane,

La pregunta aquí seria, ¿Que error te da?, ya que la sintaxis tal cual lo pones es correcta y funciona como lo esperas.

Saludos.
  #3 (permalink)  
Antiguo 16/10/2008, 17:27
 
Fecha de Ingreso: marzo-2008
Mensajes: 207
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Llamar función de un objeto propiedad de una clase

Pués ahora mismo lo acabo de probar y funciona perfectamente :S .
¿Puede ser que en PHP4 no se pudiera escribir así? Porque cuando probé esto por primera vez, usaba PHP4, y lo mismo puede ser por eso, o lo mismo puede ser también porque en su día no lo escribí bien... No sé, la cosa es que ahora por fin funciona sin problemas...

PD: GatorV, no te puedo decir qué error era, porque fué una cosa de hace tiempo, y ahora mismo no me acuerdo ^^Uu...

Gracias de todas formas por perder tu tiempo conmigo
  #4 (permalink)  
Antiguo 16/10/2008, 18:02
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Llamar función de un objeto propiedad de una clase

Si estabas usando PHP4, en efecto no puedes hacer algo así, es algo que arreglaron con PHP5.

Saludos
  #5 (permalink)  
Antiguo 16/10/2008, 19:24
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 18 años, 11 meses
Puntos: 32
Respuesta: Llamar función de un objeto propiedad de una clase

El problema es siempre el mismo, falta de conceptos y de fundamentos.... lo que haces se llama "relación de asociación" y es lo más común del mundo en POO.

Y quita la palabra "optimización" que nada tiene que ver con el tema.

PD: busca material sobre POO y UML, relaciones entre objetos, dependencia y asociación, entre otras.
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
  #6 (permalink)  
Antiguo 20/10/2008, 10:28
 
Fecha de Ingreso: marzo-2008
Mensajes: 207
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Llamar función de un objeto propiedad de una clase

Primero que nada, agradecer a GatorV su paciencia conmigo, ya que no es la primera vez que me resuelve una duda. Muchas gracias de verdad ;)

Y ahora a enriqueplace...

Cita:
Iniciado por enriqueplace Ver Mensaje
El problema es siempre el mismo, falta de conceptos y de fundamentos.... lo que haces se llama "relación de asociación" y es lo más común del mundo en POO.

Y quita la palabra "optimización" que nada tiene que ver con el tema.

PD: busca material sobre POO y UML, relaciones entre objetos, dependencia y asociación, entre otras.
Perdón, pero tengo un precioso título de técnico superior en administración de sistemas informático que corrobora que sé de sobra de eso que me mandas buscar.

Sé qué es una relación de asociación, y sé que es lo más común del mundo. Sé de sobra sobre POO y UML, ya que en clase me dieron mucha paliza con eso, lo que pasa es que ésta es la primera aplicación que hago en PHP5, y al intentar usar una relación de asociación como la que he descrito más arriba, en PHP4 no funcionaba, y dejé de usarlas en PHP por lo mismo, y ahora en PHP5 quería probar si seguía sin funcionar, y antes de escribir código para nada, quería preguntar si esto ha funcionado siempre, o a partir de PHP5 o es que nunca en la vida iba a funcionar, o es que yo no lo estaba haciendo bien (puesto que, a diferencia de Java, PHP lo he tenido que estudiar por mi cuenta gracias a un profesor que se pegó todo el curso de baja por borracho), y esa era mi duda, el por qué las otras veces no me funcionaba, nada más.

¿Y qué tiene de malo decir que el código que he estado usando en PHP4 no está optimizado (al menos para PHP5)? ¿Es que acaso "optimizar código" no es dejarlo lo más limpio, claro y funcional posible? Pues para mí eso es optimizar, pero si ustedes lo decís de otra manera, pues ya me callo.
  #7 (permalink)  
Antiguo 20/10/2008, 10:48
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 18 años, 11 meses
Puntos: 32
Respuesta: Llamar función de un objeto propiedad de una clase

Cita:
Y ahora a enriqueplace...
Bien, era evidente, me la veía venir...

Cita:
Perdón, pero tengo un precioso título de técnico superior en administración de sistemas informático que corrobora que sé de sobra de eso que me mandas buscar.
Si, confirmado, creo que *todos* tenemos que dejar el orgullo de lado.

Cita:
Sé qué es una relación de asociación, y sé que es lo más común del mundo. Sé de sobra sobre POO y UML, ya que en clase me dieron mucha paliza con eso, lo que pasa es que ésta es la primera aplicación que hago en PHP5, y al intentar usar una relación de asociación como la que he descrito más arriba, en PHP4 no funcionaba, y dejé de usarlas en PHP por lo mismo, y ahora en PHP5 quería probar si seguía sin funcionar
Fuera de intentar hacerte enojar (que no es mi intención), si "tanto sabes" como dices, no tendrías que tener problemas en hacer una "asociación" en ningún lenguaje que soporte POO... simplemente leyendo la sintaxis del lenguaje.

Cita:
, y antes de escribir código para nada, quería preguntar si esto ha funcionado siempre,
Error imperdonable! más si sabes! RTFM! ¿por qué deberías tú ahorrar el tiempo de codificar innecesariamente y sí perderlo nosotros por tu pereza?

Así es como se aprender, lee, fundamenta, y prueba.

Cita:
o a partir de PHP5 o es que nunca en la vida iba a funcionar, o es que yo no lo estaba haciendo bien (puesto que, a diferencia de Java, PHP lo he tenido que estudiar por mi cuenta gracias a un profesor que se pegó todo el curso de baja por borracho), y esa era mi duda, el por qué las otras veces no me funcionaba, nada más.
No es excusa. Tienes manuales, y hacer un "hola mundo" en PHP es mucho más simple que en Java, cual es el problema entonces?

Cita:
¿Y qué tiene de malo decir que el código que he estado usando en PHP4 no está optimizado (al menos para PHP5)? ¿Es que acaso "optimizar código" no es dejarlo lo más limpio, claro y funcional posible? Pues para mí eso es optimizar, pero si ustedes lo decís de otra manera, pues ya me callo.
Que anidar la llamadas a unos métodos tiene poco de "optimizar"... querrás decir que estás "ahorrando" unas líneas de código a costo de reducir la calidad y el entendimiento del mismo?

Pero optimizar, no, no es el caso.

Nota: repito, con las mejoras intenciones te hago mis comentarios.
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
  #8 (permalink)  
Antiguo 20/10/2008, 16:24
 
Fecha de Ingreso: marzo-2008
Mensajes: 207
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Llamar función de un objeto propiedad de una clase

Si para tí ayudar a los demás es perder el tiempo, la solución es bien simple.

No todos somos perfectos, y la mayoría necesitamos ayuda de vez en cuando, ayuda que agradecemos de corazón.

Yo sólo escribo aquí para pedir ayuda o consejo, y para ayudar a los que buenamente pueda con mis conocimientos (que por lo que leo hoy, no deden ser muchos).

Se despide una novata con una nueva lección aprendida hoy.

PD: ¿Qué significa "RTFM!"? porque me he quedado igual.

Última edición por Masane; 20/10/2008 a las 17:02
  #9 (permalink)  
Antiguo 21/10/2008, 11:36
 
Fecha de Ingreso: octubre-2005
Mensajes: 42
Antigüedad: 18 años, 6 meses
Puntos: 1
Respuesta: Llamar función de un objeto propiedad de una clase

http://www.google.com/search?q=rtfm
  #10 (permalink)  
Antiguo 21/10/2008, 12:01
 
Fecha de Ingreso: marzo-2008
Mensajes: 207
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Llamar función de un objeto propiedad de una clase

Ajam, qué expresión más agradable.
  #11 (permalink)  
Antiguo 22/10/2008, 09:35
 
Fecha de Ingreso: abril-2008
Mensajes: 453
Antigüedad: 16 años
Puntos: 16
Respuesta: Llamar función de un objeto propiedad de una clase

y en vez de tanta discucion no sacan la duda?, todos dicen que lean el manual, que esta bien pero se podria orientar en la solucion y no solo criticar:

Código PHP:
class ObjetoA
{
   private 
$ObjetoB;
   
   public function 
__construct($ObjetoB)
   {
        
$this->ObjetoB $ObjetoB;
   }   

   public function 
usarObjetoB()
   {
         return 
$this->ObjetoB->getMensaje();
   }

yo cambiaria esto
Código PHP:
 public function usarObjetoB()
   {
         return 
$this->ObjetoB->getMensaje();
   }

//por

 
public function usarObjetoB()
   {
         return 
slef::getMensaje();
   } 
si estas usando php4
Código PHP:
class ObjetoA
{
   var 
$ObjetoB;
   
   function 
ObjetoA($ObjetoB)
   {
        
$this->ObjetoB $ObjetoB;
   }   

   function 
usarObjetoB()
   {
         return 
ObjetoA::getMensaje();
   }



  #12 (permalink)  
Antiguo 22/10/2008, 10:06
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Llamar función de un objeto propiedad de una clase

Hola samu22,

La solución ya esta puesta, y las soluciones que propones generarian error ya que no esta tratando de usar objetos estaticos si no instancias de objetos.

Saludos.
  #13 (permalink)  
Antiguo 23/10/2008, 08:21
 
Fecha de Ingreso: marzo-2008
Mensajes: 207
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Llamar función de un objeto propiedad de una clase

Ya salí de mi duda hace unos días, pero gracias de todas formas samu22 por tu ayuda (la intención es lo que cuenta )
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 04:39.