在PHP中,是否可以在抽象类的子类中实例化抽象类的父类?
希望标题有意义,希望我的问题也有意义 因此,我需要在我的站点上的每个页面的开始处实例化一个Sql类,这样所有其他类都可以有一个有效的mysql资源来执行查询、更新等操作,而无需创建多个Sql对象。 但是,目前我的类扩展了一个抽象类,用于基于类上下文的不同函数实现 问题:在抽象类的子类中,我是否可以使用在PHP中,是否可以在抽象类的子类中实例化抽象类的父类?,php,abstract-class,superclass,Php,Abstract Class,Superclass,希望标题有意义,希望我的问题也有意义 因此,我需要在我的站点上的每个页面的开始处实例化一个Sql类,这样所有其他类都可以有一个有效的mysql资源来执行查询、更新等操作,而无需创建多个Sql对象。 但是,目前我的类扩展了一个抽象类,用于基于类上下文的不同函数实现 问题:在抽象类的子类中,我是否可以使用父类::u construct绕过抽象超类并实例化抽象从中扩展的Sql类 EX. class Sql { function _construct() { //get vali
父类::u 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");
}
}
正如您所见,我需要使用Sql类的函数query()
,它现在是一个父类。但是,在中间的抽象类中,这会抛出异常并中断吗? < p>是的,它会起作用:
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;
您发布的代码应该可以正常工作,因为类成员中的构造函数将运行父级
父级::\uu construct()
,这将在Sql
中运行构造函数,因为类显示中没有重载\uu构造
我希望我解释得足够好,但试一下:)
只需确保您的构造方法在Sql类中有2个下划线;您发布的代码中只有1个。谢谢大家的确认!!