Ver Mensaje Individual
  #8 (permalink)  
Antiguo 08/05/2010, 09:44
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, 5 meses
Puntos: 1517
Respuesta: Evitar repetidas llamadas a Metodos, Persistencia y herencia seria la solu

Claro, sé que conceptualmente es un desastre. Pero contestando la pregunta específicamente, sobre si los métodos son llamados implícitamente sobre los hijos, entiendo que así es. El problema es más bien en el ejemplo que indiqué.

Tenemos una clase llamada classConnectDb, luego otra clase hija llamada query y luego otra clase nieta (si es que se puede decir de esa forma) llamada fetch. Si llamo desde la clase nieta todos los métodos de la clase padre y la del abuelo ( sigo diciendo, si es que podemos llamarla de esa forma) me salta un error (Warning: mysql_query() expects parameter 2 to be resource, null given in ....... on line 26), entonces lo que hice fue colocar estas líneas en la clase query
Código PHP:
Ver original
  1. public function __construct($host, $user, $pass, $db){
  2.     parent::__construct($host, $user, $pass, $db);
  3. }
Y funciona perfectamente. Ahora mi pregunta es, ¿por qué, en este ejemplo, tengo que colocar el constructor en la clase padre forzosamente para que funcione el código si con el segundo ejemplo, funciona sin necesidad de indicar el constructor en la clase de padre?

Este es el segundo ejemplo
Código PHP:
Ver original
  1. <?php
  2. class fooBarCandy{
  3.     private $bar;
  4.  
  5.     public function __construct($bar){
  6.         $this->bar = $bar;
  7.     }
  8.  
  9.     public function bar(){
  10.         return $this->bar;
  11.     }
  12. }
  13.  
  14. class fooBar extends fooBarCandy{
  15.     private $candy;
  16.  
  17.     public function candy($candy){
  18.         return $this->candy = $candy;
  19.     }
  20. }
  21.  
  22. class foo extends fooBar{
  23.  
  24. }
  25.  
  26. $obj = new foo('fooBarCandy');
  27. echo $obj->bar() . '<br />';
  28. echo $obj->candy('fooBar');
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos