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 originalpublic function __construct($host, $user, $pass, $db){
parent::__construct($host, $user, $pass, $db);
}
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<?php
class fooBarCandy{
private $bar;
public function __construct($bar){
$this->bar = $bar;
}
public function bar(){
return $this->bar;
}
}
class fooBar extends fooBarCandy{
private $candy;
public function candy($candy){
return $this->candy = $candy;
}
}
class foo extends fooBar{
}
$obj = new foo('fooBarCandy');
echo $obj->bar() . '<br />';
echo $obj->candy('fooBar');