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

PHP OO llamar metodo de objeto desde otro

Estas en el tema de llamar metodo de objeto desde otro en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Saludos antes que nada soy nuevo en el foro y bueno espero poder ayudar y ser ayudado jeje. tenia una consulta doy un ejemplo en ...
  #1 (permalink)  
Antiguo 20/03/2013, 07:37
 
Fecha de Ingreso: marzo-2013
Mensajes: 12
Antigüedad: 11 años, 1 mes
Puntos: 1
llamar metodo de objeto desde otro

Saludos antes que nada soy nuevo en el foro y bueno espero poder ayudar y ser ayudado jeje.

tenia una consulta
doy un ejemplo en java

class uno{
String variable1;
String variable2;
public uno(String var1,String var2){
this.variable1=var1;
this.variable2=var2;
}
public int getVariable1() {
return variable1;
}
public void setVariable1(String variable1) {
this.variable1 = variable1;
}
//y el otro get y set
}

class dos{
uno tipouno;
String dato;
public dos(String dato, uno dato2){
//aca recibe como parametro un String y un dato tipo uno
this.dato=dato;
this.tipouno=dato2;
}
public int gettipouno() {
return tipouno;
}
public void setTipouno(uno tipouno) {
this.tipouno= tipouno;
}
}

ahora cuando instancio supongamos la clase llamada dos hago
uno varclass1=new uno("String uno","String dos");
dos varclass2=new dos("aca string",varclass1)

y supongamos que quiero llamar a un get de clase uno instanciando desde dos
ejemplo varclass2.getTipouno().getVariable1; esta variable1 es un dato de la clase uno.
o sea estos llamando al get de la variable que es tipo uno y de esa variable tipo uno que es del tipo dos string traer uno de ellos.

esto se puede hacer en php? o sea instanciar
$obj=new uno();
$obj->getTipouno() y aca llamar al dato que contiene ese objeto tipo uno;
y el tipo uno traer uno de sus parametros. o sea llamando a la clase dos que recibe un parametro del tipo clase uno aceder a esos datos desde la clase dos

espero que la explicacion de lo que quiero hacer sea entendible jeje me seria de mucha ayuda.
Muchas gracias
  #2 (permalink)  
Antiguo 20/03/2013, 07:49
 
Fecha de Ingreso: septiembre-2011
Mensajes: 219
Antigüedad: 12 años, 7 meses
Puntos: 31
Respuesta: llamar metodo de objeto desde otro

Si, vas a tener que revisar bibliografía acerca de "Depency Injection", el framework symfony2 hace mucho uso de este método.
  #3 (permalink)  
Antiguo 20/03/2013, 08:22
 
Fecha de Ingreso: marzo-2013
Mensajes: 12
Antigüedad: 11 años, 1 mes
Puntos: 1
Respuesta: llamar metodo de objeto desde otro

gracias por la respuesta alguien tiene algun ejemplo por ahi? estube buscando info y no encontre muho de la sintaxis
  #4 (permalink)  
Antiguo 20/03/2013, 09:01
Avatar de miguec04  
Fecha de Ingreso: agosto-2008
Ubicación: Cimitarra, Santander
Mensajes: 378
Antigüedad: 15 años, 8 meses
Puntos: 15
Respuesta: llamar metodo de objeto desde otro

Actualmente con PHP no puedes hacer eso, debes asignar el valor a una variable donde asignes el valor que retorna este metodo, lo mismo pasa si quieres validar con empty o isset algun valor
de un metodo debes primero asignarlo, si no estoy mal esto ya lo resuelve PHP6. intenta con metodos delegados del objeto que tienes dentro de esta clase principal a ver como te va
__________________
Desoftc Technology - Miguel Carmona
Creaciones Inteligentes - Cimitarra Colombia
[email protected]
http://www.desoftc.com.co
  #5 (permalink)  
Antiguo 20/03/2013, 09:20
 
Fecha de Ingreso: marzo-2013
Mensajes: 12
Antigüedad: 11 años, 1 mes
Puntos: 1
Respuesta: llamar metodo de objeto desde otro

gracias miguec04 voy a hacer unos get con lo que necesito entonces espero que en php6 salga eso en conjunto con poder usar constructores sobrecargados es lo que le faltaria a mi gusto para que php pueda ser POO
  #6 (permalink)  
Antiguo 20/03/2013, 10:52
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: llamar metodo de objeto desde otro

Que quieres hacer exactamente ? fluent interface ?, method chaining ?, no necesitas PHP 6 para algo asi, PHP actualmente lo soporta, algo asi:

Código PHP:
Ver original
  1. class Foo
  2. {
  3.     private $baz = 'baz';
  4.  
  5.     /**
  6.      * @return string
  7.      */
  8.     public function getBaz()
  9.     {
  10.         return $this->baz;
  11.     }
  12. }
  13.  
  14. class Bar
  15. {
  16.     /**
  17.      * @var Foo
  18.      */
  19.     private $foo;
  20.    
  21.     /**
  22.      * @param Foo $foo
  23.      */
  24.     public function __construct(Foo $foo)
  25.     {  
  26.         $this->foo = $foo;     
  27.     }
  28.    
  29.     /**
  30.      * @return Foo
  31.      */
  32.     public function getFoo()
  33.     {
  34.         return $this->foo;
  35.     }
  36. }

Código PHP:
Ver original
  1. $bar = new Bar(new Foo);
  2. echo $bar->getFoo()->getBaz(); //echo baz

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #7 (permalink)  
Antiguo 20/03/2013, 10:58
Avatar de miguec04  
Fecha de Ingreso: agosto-2008
Ubicación: Cimitarra, Santander
Mensajes: 378
Antigüedad: 15 años, 8 meses
Puntos: 15
Respuesta: llamar metodo de objeto desde otro

Que versión tienes instalado?, a mi no me funciona, gracias.
__________________
Desoftc Technology - Miguel Carmona
Creaciones Inteligentes - Cimitarra Colombia
[email protected]
http://www.desoftc.com.co
  #8 (permalink)  
Antiguo 20/03/2013, 11:12
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: llamar metodo de objeto desde otro

PHP tiene soporte para esto desde la versión 5, es algo que se utiliza hace tiempo en fw's y librerías PHP, de casualidad no estarás utilizando PHP 4 ?

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)

Etiquetas: clase, instancia, metodo, objeto, php
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 19:19.