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

problema clase con extend

Estas en el tema de problema clase con extend en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola a todos, tengo un problema con una clase y otra se la extiende, tengo el siguiente codigo, y asi extiendo la clase : @import ...
  #1 (permalink)  
Antiguo 20/04/2012, 11:07
Yoi
 
Fecha de Ingreso: noviembre-2008
Mensajes: 144
Antigüedad: 15 años, 5 meses
Puntos: 2
problema clase con extend

Hola a todos, tengo un problema con una clase y otra se la extiende,

tengo el siguiente codigo, y asi extiendo la clase :
Código PHP:
Ver original
  1. include_once('configuracion.php');
  2. class musica extends configuracion{
  3.  
  4. function mostar_var(){
  5. echo $this->var1."<br>";   
  6. echo $this->var2."<br>";   
  7. echo $this->var3."<br>";   
  8. echo $this->var4."<br>";   
  9.  
  10. }
  11.  
  12. }
En la clase configuracion tengo variables solamente del siguiente modo:

Código PHP:
Ver original
  1. class configuracion{
  2. var $var1 = "1";
  3. var $var2 = "2";
  4. var $var3 = "3";
  5. var $var4 = "4";
  6. }

El problema es q en la funcion que trato de imprimir las variables de la clase q se extiende, no imprime nada, alguna idea...
Gracias de antemano.
  #2 (permalink)  
Antiguo 20/04/2012, 11:34
Avatar de santris  
Fecha de Ingreso: agosto-2009
Ubicación: Sant Feliu de Llobregat
Mensajes: 955
Antigüedad: 14 años, 9 meses
Puntos: 66
Respuesta: problema clase con extend

Pues a mí me funciona, mira si haces bien la llamada a la función, pues le has puesto un nombre que depista.

Código PHP:
<?php
ini_set 
("display_errors","1" );
error_reporting(E_ALL);
    class 
configuracion{
    var 
$var1 "1";
    var 
$var2 "2";
    var 
$var3 "3";
    var 
$var4 "4";
    }
class 
musica extends configuracion{
 
function 
mostar_var(){
echo 
$this->var1."<br>";   
echo 
$this->var2."<br>";   
echo 
$this->var3."<br>";   
echo 
$this->var4."<br>";   
 
}
 
}
$n = new musica();
$n->mostar_var();
?>
saludos,
__________________
Tu álbum de cromos online!!
  #3 (permalink)  
Antiguo 20/04/2012, 11:59
Yoi
 
Fecha de Ingreso: noviembre-2008
Mensajes: 144
Antigüedad: 15 años, 5 meses
Puntos: 2
Respuesta: problema clase con extend

Hola Santris, ya resolvi el inconveniente, todo fue solamente adicionando
Código PHP:
Ver original
  1. parent::__construct();
en el constructor de la clase, que pena, no supe explicar, pero muchas gracias por la ayuda...
  #4 (permalink)  
Antiguo 20/04/2012, 14:14
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: problema clase con extend

aunque hayas resuelto el problema te voy a dar un consejito
Código PHP:
Ver original
  1. var $atributo

es de php4 cuando se dio el primer paso para que el lenguaje soportara orientado a objetos, ahora los atributos se declaran con la visibilidad
ejemplo
Código PHP:
Ver original
  1. class Foo {
  2.     private $atributo;
  3.     protected $atributo;
  4. }
no te declaro atributo público, porque en teoría no debería de accederse directamente a un atributo de una clase, sino por medio de los métodos de la misma, saludos

Edit:
Ya en tu problema como tal si te fijas en este pequeño ejemplo que te indico
Código PHP:
Ver original
  1. <?php
  2. class Foo
  3. {
  4.  protected $var = "a";
  5. }
  6.  
  7. class Baz extends Foo
  8. {
  9.     public function show()
  10.     {
  11.         echo $this->var;
  12.     }
  13. }
  14. $b = new Baz();
  15. $b->show();
no es necesario instanciar el constructor de la clase padre, de hecho al atributo ser de visibilidad protected puede ser accedido por la misma clase y por sus derivadas, saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way

Última edición por carlos_belisario; 20/04/2012 a las 14:19

Etiquetas: clase, 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 21:25.