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

PHP OO Duda sobre herencia en PHP

Estas en el tema de Duda sobre herencia en PHP en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola a todos, este es mi primers post, resulta que recién estoy comenzando con PHP, soy lo que se le dice un "newbie" . Bueno ...
  #1 (permalink)  
Antiguo 25/07/2012, 21:08
 
Fecha de Ingreso: julio-2012
Mensajes: 4
Antigüedad: 11 años, 9 meses
Puntos: 0
Pregunta Duda sobre herencia en PHP

Hola a todos, este es mi primers post, resulta que recién estoy comenzando con PHP, soy lo que se le dice un "newbie". Bueno mi consulta es acerca de herencia.

Tengo 2 clases una 'A 'y 'B', si 'B' hereda de 'A' los métodos y propiedades de ésta..

Código:
clase A
{
     private $param = 'valor param';

     public function set_param($value)
     {
          $this->param = $value;
     }

     public function get_param()
     {
          return $this->param;
     }    
}

class B extends A
{
      public function otro_metodo()
      {
          // codigo...
      }
}

$A = new A();
$B = new B();

$A->set_param('otro_valor');
print $B->get_param();  // imprime valor_param y no 'otro_valor' por qué? 
... por qué no se ve reflejado el cambio del parámetro? si con el método 'set_param' le he cambiado el valor y se supone que en 'B' debería tener ese nuevo valor, pero me muestra la que tiene por defecto. ¿?

Saludos
  #2 (permalink)  
Antiguo 25/07/2012, 21:56
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Duda sobre herencia en PHP

Porque las propiedades no se "comparten" cuando heredas un código, A y B son dos objetos diferentes, aunque tienen una relación de herencia pero solo es a nivel código, cada una de las clases tiene objetos independientes.

Saludos.
  #3 (permalink)  
Antiguo 25/07/2012, 22:29
 
Fecha de Ingreso: enero-2009
Mensajes: 14
Antigüedad: 15 años, 3 meses
Puntos: 1
Respuesta: Duda sobre herencia en PHP

La única manera de heredar el valor sería tener una propiedad estática, la cuál estaría compartida por todas las clases que la hereden.

Última edición por donrito; 25/07/2012 a las 22:38
  #4 (permalink)  
Antiguo 25/07/2012, 22:46
 
Fecha de Ingreso: julio-2012
Mensajes: 4
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: Duda sobre herencia en PHP

Hola, gracias por contestar. Ok, ahora lo tengo, pero... si tengo un valor por defecto y dentro del contructor de la clase padre, en este caso 'A', le cambio ese valor, al crear la instancia 'B', si se ve reflejado el cambio, entonces... que no debería estar con la por defecto???
  #5 (permalink)  
Antiguo 25/07/2012, 23:07
 
Fecha de Ingreso: enero-2009
Mensajes: 14
Antigüedad: 15 años, 3 meses
Puntos: 1
Respuesta: Duda sobre herencia en PHP

Ah, es que es para inicializar propiedades y/u otra tarea de inicialización, las puedes definir en el constructor, o las defines antes, por eso.

Saludos.
  #6 (permalink)  
Antiguo 27/07/2012, 14:06
 
Fecha de Ingreso: julio-2008
Ubicación: Barcelona
Mensajes: 2.100
Antigüedad: 15 años, 9 meses
Puntos: 165
Respuesta: Duda sobre herencia en PHP

Creo que con este ejemplo lo puedes entender:

Código PHP:
Ver original
  1. class Vehiculo {
  2.    public $ruedas;
  3.  
  4.    public function __construct() {
  5.       $this->ruedas = 4;
  6.    }
  7.  
  8. }
  9.  
  10. class Motocicleta extends Vehiculo {
  11.    
  12.    public function __construct() {
  13.      
  14.       echo 'Antes: ' . $this->ruedas . '<br />';
  15.  
  16.       $this->ruedas = 2;
  17.      
  18.       echo 'Después: ' . $this->ruedas . '<br />';
  19.    }
  20.  
  21. }
__________________
Gracias por el Karma :D

empleo ofertas de trabajo
  #7 (permalink)  
Antiguo 27/07/2012, 14:23
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Duda sobre herencia en PHP

@miktrv, te falta llamar a parent::__construct() al redefinir el constructor
  #8 (permalink)  
Antiguo 28/07/2012, 15:56
 
Fecha de Ingreso: julio-2008
Ubicación: Barcelona
Mensajes: 2.100
Antigüedad: 15 años, 9 meses
Puntos: 165
Respuesta: Duda sobre herencia en PHP

Hey es verdad!! se me ha colado!! jaja



Un saludo!
__________________
Gracias por el Karma :D

empleo ofertas de trabajo

Etiquetas: clase, class, herencia, php
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 01:59.