Cita:
Iniciado por guardarmicorreo 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<?php
class class1{
public function __construct() {
return "hola mundo";
}
public function method1(){
return "method1";
}
}
class class2{
public function __construct() {
}
public function method2($input){
return $input;
}
}
$obj= new class1();
$obj2=new class2();
echo $obj2->method2($obj->__construct());
echo "<br>";
echo $obj2->method2($obj->method1());
/*
imprime
hola mundo
method1
*/
?>
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