是可以实例化一个抽象类的父在PHP中的抽象类的孩子呢?
问题描述:
希望标题是有意义的,希望我的问题确实也是如此。是可以实例化一个抽象类的父在PHP中的抽象类的孩子呢?
所以我需要实例在我的网站在每一页的启动SQL类,以便所有其他类可以有一个有效的MySQL的资源做了查询,更新等,而无需创建多个SQL对象。 然而,目前我的类扩展的抽象类的基于类上下文功能不同的实现。
问题:在抽象类的孩子中,我可以使用parent::_construct
绕过抽象超类并实例化抽象扩展的Sql类吗?
EX。
class Sql {
function _construct() {
//get valid db resource
}
function query() {
//// query code
}
}
abstract class Display extends Sql {
function show() {
return $this->displayRecipe();
}
abstract function getRecipe();
}
class Members extends Display {
function __construct() {
parent::__construct();
}
function getRecipe($member_id) {
return $this->query("select * from recipes where member=$member_id");
}
}
正如你可以看到我NEET使用SQL类现在是一个granparent类的function query()
。但是,在中间的抽象类中,这会抛出异常并中断吗?
答
是它的工作:
Class Person{
public $age;
public $name;
public $school;
public function __construct($age,$name,$school){
$this->age = $age;
$this->name = $name;
$this->school = $school;
echo "It works!";
}
}
abstract class Student extends Person{
}
class UniversityStudent extends Student{
public function __construct($age,$name,$shcool){
parent::__construct($age,$name,$school);
}
}
$x = new UniversityStudent(20,"Paul","ULA");
echo $x->age;
答
你贴应该只是罚款,因为类成员构造函数将运行父parent::__construct()
,这将在Sql
运行构造函数的构造函数的代码,因为__construct不在类Display中被重载。
我希望我解释得不错,但试试:) 只要确保你的构造方法在Sql类中有2个下划线;它在您发布的代码中只有1个。
感谢确认家伙! – Naterade 2012-01-09 05:54:44