У меня есть эти классы
class db {
}
class el {
public function __construct (db $db) {
$this->db = $db;
}
}
class a {
public function __construct (db $db) {
}
}
class b extends a {
public function __construct ($db) {
parent::__construct($db);
}
}
class c extends b {
public function __construct ($db) {
parent::__construct($db);
}
}
Если я создаю класс b, все в порядке
new b(new el(new db ()));
Но если я создаю экземпляр класса ca получил ошибку
new c(new el(new db ()));
PHP Catchable fatal error: аргумент 1, переданный в :: __ construct(), должен быть экземпляром db, экземпляр el
Что я должен сделать, чтобы решить ситуацию:
Используя get_class($this)
в конструкторе класса B, вы сможете отличить от вызова родительского конструктора с C или прямого вызова.
См. Http://php.net/manual/en/function.get-class.php, пример № 2.
Iansus.