使用包括在课堂上正确
问题描述:
我有一个主类中index.php
:使用包括在课堂上正确
class myClass {
public function lorem() {
include_once 'extendClass.php';
}
public function __construct() {
$this->lorem();
}
}
// run class
new extendClass();
我需要include_once 'extendClass.php'
的lorem()
函数中。
在我extendClass.php
文件,我谨向与类功能:
class extendClass extends myClass {
public function lorem(){
echo "foo bar";
parent::lorem();
}
}
当我使用index.php
new extendClass()
,我得到一个错误,因为include_once()
不会被触发。这个难题的解决方案是什么?
注意:include_once()
必须在myClass
之内。
答
这里有两个问题
- 你正在创建一个改写了该
lorem()
功能的子类。您将不得不明确地致电parent::lorem()
以获得它 - 即使您调用它,执行
include
的父功能意味着该函数中定义的任何内容都是本地范围为该功能。因此,这意味着你的孩子函数不能继承它(至少在没有某种return
声明)
你需要移动包括类声明
include_once 'extendClass.php';
class myClass {
public function lorem() {
}
public function __construct() {
$this->lorem();
}
}
// run class
new extendClass();
不能嵌套类之外声明。 – Rizier123
@ Rizier123在这种情况下,我唯一的选择是创建两个完全分离的类吗?请详细说明。 –
是的。此外,嵌套类甚至能够从尚未定义的类中扩展出来?所以你可能想要在它下面定义它。 – Rizier123