Ver Mensaje Individual
  #5 (permalink)  
Antiguo 04/06/2011, 18:22
Avatar de abimaelrc
abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: PHPOO LLamar Una clase Padre desde un php diferente?

Cuando hablas de clase padre, das a entender que hay otra clase que extiende de ella. Si te fijas en el ejemplo de GatorV te indica primero que la clase hija hace un extends de la clase padre. Eso hace que todos los atributos y funciones esten disponibles de la clase padre, esten ya disponibles para la clase hija. En otras palabras esto:
Código PHP:
Ver original
  1. <?php
  2. // Foo.php
  3. class Foo
  4. {
  5.     public function bar()
  6.     {
  7.         //...
  8.     }
  9. }
  10.  
  11. // Baz.php
  12. class Baz extends Foo
  13. {
  14.     public function candy()
  15.     {
  16.         //...
  17.     }
  18. }

"Es como si fuera esto":
Código PHP:
Ver original
  1. class Baz
  2. {
  3.     public function bar()
  4.     {
  5.         // metodo de la clase padre esta disponible en la clase hija
  6.     }
  7.  
  8.     public function candy()
  9.     {
  10.         // metodo de la clase hija
  11.     }
  12. }
Si te fijas todos los métodos (que sean protected o public) están disponibles en la clase hija como si los hubieras creado directamente.

Ahora también te colocó, que en un archivo colocó la clase padre y en otro la clase hija, luego en el lugar donde los voy a usar, colocó dos require (aunque lo aconsable es usar require_once o include_once, pero él quiso darte un ejemplo de lo que tienes hacer) y llamas las clases. Si tu lo que quieres es llamar desde la clase hija un método de la clase padre, solo tienes que hacer algo así (teniendo en cuenta el primer ejemplo)
Código PHP:
Ver original
  1. <?php
  2. require_once 'Foo.php';
  3. require_once 'Baz.php';
  4.  
  5. $baz = new Baz;
  6. //Este método está en la clase padre, pero lo puedes llamar desde la clase hija así
  7. $baz->bar();
  8.  
  9. //Este método está en la clase hija
  10. $baz->candy();

Ahora si tu lo que quieres indicar que tienes dos clases totalmente diferente, que no guardan relación alguna (primero no le digas clase padre porque confunde), lo que haces es que creas la instancia dentro de la segunda clase y lo llamas, algo como
Código PHP:
Ver original
  1. <?php
  2. class Foo
  3. {
  4.     public function bar()
  5.     {
  6.         return 'bar';
  7.     }
  8. }
  9.  
  10. class Baz
  11. {
  12.     private $_foo;
  13.     public function __construct()
  14.     {
  15.          $this->_foo = new Foo;
  16.     }
  17.  
  18.     public function candy()
  19.     {
  20.         return $this->_foo->bar();
  21.     }
  22. }
  23.  
  24. $baz = new Baz;
  25. echo $baz->candy();
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos