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

PHPOO LLamar Una clase Padre desde un php diferente?

Estas en el tema de PHPOO LLamar Una clase Padre desde un php diferente? en el foro de Frameworks y PHP orientado a objetos en Foros del Web. HOla amigos, quisiera saber si es posible llamar a una clase padre con extends desdd una clase hija pero q no este en ese php?- ...
  #1 (permalink)  
Antiguo 04/06/2011, 13:49
 
Fecha de Ingreso: marzo-2009
Mensajes: 90
Antigüedad: 15 años, 1 mes
Puntos: 0
PHPOO LLamar Una clase Padre desde un php diferente?

HOla amigos, quisiera saber si es posible llamar a una clase padre con extends desdd una clase hija pero q no este en ese php?-

es decir Yo tengo un php que se llama CLientes.php y contiene muchos atributos y sus set y get, osea los metodos. esta clase es la clase padre

tengo un php llamado control.php donde tengo la conexion base datos y muchos metodos q necesito pero q requieren de los atributos de la clase padre.

la pregunta va de nuevo como llamo a esos atributos si estan en otro php. ya lo hecho pero todo lo tengo en un mismo php

es posible? Seria algo desanimador si no es posible trabajar herencia de esta manera y q siempre tenga q todo estar mezclado en un solo archivo.

bueno espero cualquier comentario
  #2 (permalink)  
Antiguo 04/06/2011, 13:59
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: PHPOO LLamar Una clase Padre desde un php diferente?

Para llamar a los atributos de la clase padre tienes que usar parent, por ejemplo:
Padre.php
Código PHP:
Ver original
  1. class Padre {
  2.       private $_nombre;
  3.  
  4.       public function setNombre($nombre)
  5.       {
  6.              $this->_nombre = $nombre;
  7.       }
  8.  
  9.       public function getNombre()
  10.       {
  11.              return $this->_nombre;
  12.       }
  13. }

Hija.php
Código PHP:
Ver original
  1. class Hija extends Padre {
  2.         public function setNombre($nombre)
  3.         {
  4.                parent::setNombre("Hija - " . $nombre);
  5.         }
  6. }

proceso.php
Código PHP:
Ver original
  1. require("Padre.php");
  2. require("Hija.php");
  3.  
  4. $padre = new Padre();
  5. $padre->setNombre("Pedro");
  6.  
  7. $hija = new Hija();
  8. $hija->setNombre("Juana");
  9.  
  10. echo $padre->getNombre();
  11. echo $hija->getNombre();

Con eso te debes de dar una idea de como ver heredar y compartir las propiedades.

Saludos.
  #3 (permalink)  
Antiguo 04/06/2011, 14:45
 
Fecha de Ingreso: marzo-2009
Mensajes: 90
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: PHPOO LLamar Una clase Padre desde un php diferente?

ok gracias pero no es lo q pedia. es decir mira

supongamos algo asi.
Código HTML:
  clientes.php
class clientes{

protected $nombre;
protected $apellido;
.
.
.
public function name($vr1){

 $this->nombre=$vr1   

}  y asi con los demas

}

Otro php LLAMADO control.php  diferente a clientes
class control{

public function conexion(){

}

public function add_clientes(){


}


public function listar_clientes(){


}


public function actualizar_clientes(){


}


public function eliminar_clientes(){


}

}

y otro PHP llamado inst_formulariosclientes.php

requiere("control.php");
no se si tambien requiere a clientes.php

aqui lo q ya todos conocemos 
$nombres=$_post['nombres'];
.
.
. etc

cli =new Control();
cli->coneccion();
cli->addclientes();


Bueno eso es un ejemplo de lo q quiero, se q hay algunos errores en sintaxis pero se trata es de mostrarles lo q deseeo hacer. como venb hay una clase padre clientes y su hija esta en otro php llamado control...como puedo llamar a sus atributos esa es mi pregunta.
  #4 (permalink)  
Antiguo 04/06/2011, 14:47
 
Fecha de Ingreso: junio-2008
Mensajes: 131
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: PHPOO LLamar Una clase Padre desde un php diferente?

La respuesta de GatorV está completa pero creo que lo único que kosios necesita saber es el funcionamiento de las funciones o sentencias include, include_once, require y require_once.

Saludos.
  #5 (permalink)  
Antiguo 04/06/2011, 18:22
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
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
  #6 (permalink)  
Antiguo 05/06/2011, 10:09
Avatar de gjx2  
Fecha de Ingreso: agosto-2008
Ubicación: R.D
Mensajes: 1.153
Antigüedad: 15 años, 8 meses
Puntos: 139
Respuesta: PHPOO LLamar Una clase Padre desde un php diferente?

Con todo respecto a senor GatorV
No estoy de acuerdo con su respuesta , saliendo un poco del tema
primero usted dice

"Para llamar a los atributos de la clase padre tienes que usar parent".
Quizas quiso decir que para llamar un METODO desde la clase hija se utiliza parent

Otra cosa, para que tengo que utilizar parent si no voy hacer un overwrite del metodo ?
no digo que no funcione pero no veo la necesidad.



Si heredo los metodo de la clase base
los puedo llamar desde la clase hija con solo utilizar $this ojo
siempre y cuando no necesite hacer overwrite




Senor GatorV su definición con relacion al ejemplo que usted pone no esta mal , pero lo que me choco fue como
usted dice
"Para llamar a los atributos de la clase padre TIENES que usar parent"


Disculpe estoy aprendiendo ahora POO y me confunden algunas cosas.

Código PHP:
Ver original
  1. class padre {
  2.  
  3.    
  4.     private $_Nombre;
  5.    
  6.     public function setNombre($nombre){
  7.         $this->_Nombre = $nombre;
  8.        
  9.     }
  10.    
  11.     public function getNombre(){
  12.         return $this->_Nombre;
  13.     }  
  14.  
  15. }
  16.  
  17. class hija extends padre{
  18.  
  19.  
  20.     public function getD($l){
  21.        
  22.         $this->setNombre($l);
  23.         return $this->getNombre();
  24.     }
  25.    
  26.  
  27. }
  28.  
  29.  
  30.  
  31. $b = new hija();
  32. $v = $b->getD('foo bar');
  33. print $v;
  #7 (permalink)  
Antiguo 06/06/2011, 07:05
 
Fecha de Ingreso: marzo-2009
Mensajes: 90
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: PHPOO LLamar Una clase Padre desde un php diferente?

Hola agradesco sus respuestas a todos, hee bueno no queria q este tema se volviera algo complejo, ni mucho menos...

Tan solo deseaaba trabajar las cosas mas ordenas, tener un php con todos los atributos de una clase como es clientes q para mi trabajo tiene alrededor de unos 20 campos y tener un php controlador ddonde tubiera mi conexion BD y los 4 metodos fundamentales ADD, Update, DELETE, LIST, para asi poder trabajar mas ordenado y luego tener su instancia y porsupuesto el Formulario, todo era para emular lo mas posible el MODELO VISTA CONTROLADOR. MVC. bueno les agradesco y si tienen mas ideas colonquelas apenas tenga resulesto lo q quiero lo publicare listo. PEro sin su ayuda no podre lograr nada.
  #8 (permalink)  
Antiguo 06/06/2011, 07:51
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: PHPOO LLamar Una clase Padre desde un php diferente?

@kosios

En ese caso usa como te comentaron más arriba include/require para cargar las clases en las clases donde requieras usarlas, es algo similar al import de Java.

@gjx2

Es necesario cuando sobreescribes el método, y es necesario cuando quieres llamar al método padre, si solo vas a llamar al método hijo no es necesario usar parent.

Saludos.

Etiquetas: clase, diferente, padre, php, phpoo
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 21:57.