Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: Skeletron en 5 Enero 2011, 03:45 am



Título: Problema con objeto dentro de otro objeto
Publicado por: Skeletron en 5 Enero 2011, 03:45 am
Alguien me puede decir porque Carajo no funciona esto?

Código
  1. <?php
  2. include('personaje.php');
  3. $pepe = new Personaje(22); //Esto si funciona
  4.  
  5. class Guerrero{
  6. private $pepe = new Personaje(22); //Esto no funciona
  7.  
  8. function getPersonaje(){
  9. //return $this->personaje;
  10. }
  11. }
  12. ?>

Que le pica a PHP? No se puede crear un objeto dentro de otro objeto? WTF? WTFF?


Título: Re: Problema con objeto dentro de otro objeto
Publicado por: WHK en 5 Enero 2011, 04:00 am
Código
  1. <?php
  2.  
  3. class Guerrero{
  4. var $personaje;
  5.  
  6. function __construct(){
  7. include('personaje.php');
  8. $this->personaje = new Personaje();
  9. }
  10.  
  11. function getPersonaje($id){
  12. return $this->personaje->get($id);
  13. }
  14. }
  15. ?>

las variables publicas y privadas de una clase son constantes, no pueden llevar valores variables como por ejemplo la carga directa de una función.
en ese caso solamente declaras el nombre de la variable y despues con __construct() defines el valor de la variable al iniciar la clase y para llamar una clase dentro de otra clase le haces un
$objeto->variable_que_aloja_el_otro_objeto->variable_o_funcion;

saludos.


Título: Re: Problema con objeto dentro de otro objeto
Publicado por: Skeletron en 5 Enero 2011, 04:07 am
Mira vos que interesante.
No es al pedo que sos Moderador Global...
Busqué esta solucion en Español, y NADA. Todo en Ingles, y no entendía las explicaciones :P

Pero cuando hago un var $x, se puede acceder desde fuera luego? o necesito un GET? (lo iré a probar :P )


Título: Re: Problema con objeto dentro de otro objeto
Publicado por: Skeletron en 5 Enero 2011, 04:10 am
O sea que, voy a perder la funcionabilidad dentro de la clase (a la hora de programar), esa que cuando escribes: $this->pepe-> y te lista los metodos que hay dentro de pepe...
Que **** *****.


EDITO:
SI!! FUNCIONA! :P
Gracias Dreamweaver :P