Si te fijas bien en la instancia
Código PHP:
Ver original$obj = new fetch('hostname','username','password','database');
llamé al nieto (si es que se puede decir de esa forma). Todas los métodos se llamaron implicitamente, es decir desde el nieto llamé los metodos del abuelo (si es que podemos decirlo de esta forma) y del padre. Te expongo otro ejemplo para que quedes claro
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');
Si te fijas la clase nieta no tiene nada y desde la clase nieta llamo tanto los método de la clase padre y la clase abuelo, porque ya están declaradas implicitamente.
Ahora en el primer ejemplo que te indique el único método que no llamé implícito es el de
__contruct porque me daba un error (Warning: mysql_query() expects parameter 2 to be resource, null given in ....... on line 26) en la parte del query, pero si le coloco el constructor como te indiqué funciona correctamente. Entonces me gustaría saber ¿por qué en el primer ejemplo que expongo, tengo que forzosamente indicarle el __construct de la clase abuela a la clase padre? ¿No es de suponer que lo tome implícitamente? Eso sí, no es necesario indicar, en el primer ejemplo, la última clase el __construct.
En fin el primer ejemplo se puede hacer de esta forma sin errores:
Código PHP:
Ver original<?php
class classConnectDb{
private $mysql_host;
private $mysql_user;
private $mysql_pass;
private $mysql_db;
protected $connect_db;
public function __construct($host, $user, $pass, $db){
$this->mysql_host = $host;
$this->mysql_user = $user;
$this->mysql_pass = $pass;
$this->mysql_db = $db;
}
public function connectDb(){
}
}
class query extends classConnectDb{
protected $mysql_query;
public function __construct($host, $user, $pass, $db){
parent::__construct($host, $user, $pass, $db);
}
public function query($query){
}
}
class fetch extends query{
public function fetchQuery(){
}
}
$obj = new fetch('hostname','username','password','database');
$obj->connectDb();
$obj->query('SELECT * FROM tabla');
while($row = $obj->fetchQuery()){
}