Ver Mensaje Individual
  #5 (permalink)  
Antiguo 27/06/2014, 03:10
Avatar de jor_0203
jor_0203
 
Fecha de Ingreso: octubre-2011
Ubicación: mexico
Mensajes: 760
Antigüedad: 13 años, 1 mes
Puntos: 8
Respuesta: en java se puede meter un objeto dentro de otro, esto se puede en php?

Cita:
Iniciado por guardarmicorreo Ver Mensaje
En realidad no estás metiendo un objeto dentro de otro en la forma que estás declarando un objeto dentro de otro. No.

Lo que sí estás haciendo con eso es pasar como parámetro la instancia/copia de un objeto al constructor de otro. Y eso sí es posible.

Es fácil de entender: desde el momento que puedes guardar la instancia en una variable, esa variable la puedes transportar a donde quieras en el programa ¿cierto? Entondes es coherente y lógico que esa variable con la instacia a ese objeto puedas usarlo dentro de otra clase.

De otra manera las clases no serían instaciables y no habría forma de recoger el valor que generan en una variable o arreglo.

Hay una explicación un poco más técnica.

Si una variable es un espacio reservado en memoria, lo que estás guardando en memoria es una copia de las instrucciones que contiene esa clase, que más adelante el parser/intérprete leerá e intentará ejecutar.

Para entender esto, prueba lo siguiente en PHP

Código PHP:
Ver original
  1. <?php
  2. class class1{
  3.     public function __construct() {
  4.         return "hola mundo";
  5.     }
  6.    
  7.     public function method1(){
  8.         return "method1";
  9.     }
  10. }
  11.  
  12.  
  13. class class2{
  14.     public function __construct() {
  15.     }
  16.    
  17.     public function method2($input){
  18.         return $input;
  19.     }
  20. }
  21.  
  22. $obj= new class1();
  23.  
  24. $obj2=new class2();
  25.  
  26. echo $obj2->method2($obj->__construct());
  27.  
  28. echo "<br>";
  29.  
  30. echo $obj2->method2($obj->method1());
  31.  
  32. /*
  33. imprime
  34.  
  35. hola mundo
  36. method1
  37.  
  38. */
  39.  
  40. ?>
hermano eres un genio
que ejemplo tan genial
solo quiero agregar esto,

echo $obj2->method2($obj->__construct());

me estoy llevando el método adentro por así decir dentro de la otra clase
y por eso se imprime, eso es correcto