我需要能够从父类运行子方法。 我正在调用子函数$ this-> getPlan,但它不调用子计划,而只调用父计划。我以为扩展课程超越了这个功能。 这是我的代码
class logon{
public function getPlan(){}
public function __construct(){
}
public function checkWorks(){
$this->getPlan();
}
}
class plan extends logon{
function __construct(){
parent::__construct();
}
public function getPlan(){
echo "test";
}
}
$logon = new logon();
$plan = new plan();
$logon->checkWorks();
但是,如果我像这样调用父构造函数中的代码,它会调用我的子方法。
public function __construct(){
$this->getPlan();
}
我不想使用抽象类来执行此操作,因为这是有充分理由的。 谁能告诉我为什么我的父方法没有被子类覆盖?
答案 0 :(得分:0)
您正在调用登录方法:
$logon->checkWorks();
但getPlan
类中的logon
为空。你需要打电话给儿童班(计划):
$plan->checkWorks();
答案 1 :(得分:0)
我以不同的方式解决了这个问题。 最初的问题是这个。我需要在计划中包含登录类,以便我可以访问数据库。问题是登录需要在计划中运行方法,并且我不能包含计划类,因为这会产生循环问题。
我的解决方案已经到了一半,但我有一个合适的解决方案。通过制定计划类,孩子解决了不包括登录访问数据库的问题,但我仍然可以在计划中调用方法。现在我不包括登录计划我可以在已解决问题的登录中包含计划,并且它可以工作。这是我的解决方案。现在我可以从两个类中访问我的方法。我知道如果我努力的话,我会找到一种方法。
class logon{
public function __construct(){
}
public function checkWorks(){
$p= new plan();
$p->getPlan();
}
}
class plan extends logon{
public function __construct(){
parent::__construct();
}
public function getPlan(){
echo "test";
}
}
$logon = new logon();
$logon->checkWorks();