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

Herencia de variables en class

Estas en el tema de Herencia de variables en class en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Como hago para que tome la variable $page la clase hijo? q estoy haciendo mal? Código PHP: require( 'class_load.php' ); class  a  {     public  $page ...
  #1 (permalink)  
Antiguo 12/08/2012, 00:30
Avatar de hackcrack  
Fecha de Ingreso: abril-2011
Mensajes: 331
Antigüedad: 13 años, 7 meses
Puntos: 9
Herencia de variables en class

Como hago para que tome la variable $page la clase hijo? q estoy haciendo mal?

Código PHP:
require('class_load.php');

class 
{
    public 
$page;

    function 
__construct() 
       {
        
$this->page = new Load();
    }
}

class 
EXTENDS {

    function 
__construct() 
         {
        
$this->page->function();
    }

__________________
Los mejores juegos de PC gratis en ******
  #2 (permalink)  
Antiguo 12/08/2012, 00:43
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 15 años
Puntos: 168
Respuesta: Herencia de variables en class

ya la tiene, una vez que se heredan los atributos y metodos de otra clase esta subclase ya tiene todo incorporado, pero no todo lo de la subclase esta incorporado en la clase padre.

http://www.php.net/manual/es/languag...nheritance.php

extends no va en mayusculas creo
  #3 (permalink)  
Antiguo 12/08/2012, 00:51
Avatar de hackcrack  
Fecha de Ingreso: abril-2011
Mensajes: 331
Antigüedad: 13 años, 7 meses
Puntos: 9
Respuesta: Herencia de variables en class

Gracias rodri. Eso ya lo habia leido, pero no me saco del problema..
Me aparece fatal error porque recivo vacia la variable.
La unica forma que funciona es instanciando la variable en la misma clase en la que la uso

Cita:
require('class_load.php');

class a {


function __construct()
{

}
}

class b EXTENDS a {

function __construct()
{
$this->page = new Load();
$this->page->function();
}
}
Pero no quiero eso, ya que la clase A seria un constructor, y necesito cargarla en esa misma.
__________________
Los mejores juegos de PC gratis en ******
  #4 (permalink)  
Antiguo 12/08/2012, 01:04
 
Fecha de Ingreso: agosto-2012
Ubicación: Santiago
Mensajes: 124
Antigüedad: 12 años, 3 meses
Puntos: 60
Respuesta: Herencia de variables en class

la clase Load tiene una función llamada function()?

Lo digo por esta línea: $this->page->function();
ya que function es una palabra reservada, dudo que se llame así, o sólo fue un ejemplo?

Y al momento de heredar, tu clase hija hereda todos los atributos y metodos del padre. Pero, como la asignación la estás haciendo dentro del construct ésta aún no se inicializa.

Puedes usar un parent::__construct en el __construct hijo para tomarla.


Quedaría algo asi:
Código PHP:
Ver original
  1. function __construct()  
  2.          {
  3.         parent::__construct();
  4.         $this->page->function();
  5.     }
__________________
~~Aprendiendo.
Become a Programmer, Moth*rf*cker
  #5 (permalink)  
Antiguo 12/08/2012, 01:11
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 15 años
Puntos: 168
Respuesta: Herencia de variables en class

tal vez te falta aclarar que ese constructor es del padre.

http://www.php.net/manual/es/language.oop5.decon.php

parent::__construct
  #6 (permalink)  
Antiguo 12/08/2012, 01:16
Avatar de hackcrack  
Fecha de Ingreso: abril-2011
Mensajes: 331
Antigüedad: 13 años, 7 meses
Puntos: 9
Respuesta: Herencia de variables en class

Si es una funcion de ejemplo function()

El problema es que si agrego parent::__construct(); se hace un bucle porque desde la clase padre inicializo a la clase hijo, seria algo como esto el codigo:


Cita:
require('class_load.php');

class a {


function __construct()
{
$this->page = new Load();

$this->pageb = new b();
$this->pageb->load();
}
}

class b EXTENDS a {

function __construct()
{}
function load(){

$this->page->function();
}
}
__________________
Los mejores juegos de PC gratis en ******
  #7 (permalink)  
Antiguo 12/08/2012, 01:22
 
Fecha de Ingreso: agosto-2012
Ubicación: Santiago
Mensajes: 124
Antigüedad: 12 años, 3 meses
Puntos: 60
Respuesta: Herencia de variables en class

Cita:
Iniciado por hackcrack Ver Mensaje
porque desde la clase padre inicializo a la clase hijo

1.- No están los atributos
2.- Como las instanciaciones están en el constructor, al momento que le llegan al hijo, no las recibe, porque no llamas al constructor padre.
3.- Puedes llamar al constructor padre como mencioné anteriormente o hacer métodos en el padre para cada instanciación y luego llamar a esos métodos desde el hijo.
__________________
~~Aprendiendo.
Become a Programmer, Moth*rf*cker
  #8 (permalink)  
Antiguo 12/08/2012, 01:30
Avatar de hackcrack  
Fecha de Ingreso: abril-2011
Mensajes: 331
Antigüedad: 13 años, 7 meses
Puntos: 9
Respuesta: Herencia de variables en class

Ok, gracias Carlos. Como seria lo de crear metodos en el padre y llamarlos desde el hijo.

osea algo como

Cita:
class a {
function metodo(){
$var = 1;
}
}

class b extends a {
function __construct(){
metodo();
}
}
__________________
Los mejores juegos de PC gratis en ******
  #9 (permalink)  
Antiguo 12/08/2012, 01:35
 
Fecha de Ingreso: agosto-2012
Ubicación: Santiago
Mensajes: 124
Antigüedad: 12 años, 3 meses
Puntos: 60
Respuesta: Herencia de variables en class

Código PHP:
Ver original
  1. class a {
  2. function metodo(){
  3. $var = 1;
  4. return $var;
  5. }
  6. }
  7.  
  8. class b extends a {
  9. function __construct(){
  10. echo parent::metodo();
  11. }
  12. }
  13.  
  14. $instaciar = new b();

algo así... eso te devuelve "1"
__________________
~~Aprendiendo.
Become a Programmer, Moth*rf*cker
  #10 (permalink)  
Antiguo 12/08/2012, 01:38
Avatar de hackcrack  
Fecha de Ingreso: abril-2011
Mensajes: 331
Antigüedad: 13 años, 7 meses
Puntos: 9
Respuesta: Herencia de variables en class

Perfecto, me funciono!
Gracias por la ayuda. (veo que los programadores somos noctambulos, porque siempre esta activo el foro hasta altas horas de la madrugada xD ).
__________________
Los mejores juegos de PC gratis en ******

Etiquetas: class, herencia, variables
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 07:15.