有类似的问题,但没有一个能给我一个满意的答案。
首先,这是我的(简化)代码:
class classA; {
function __construct() {
...do something...
$this->init();
}
}
class classB extends classA {
function init {
...do something specific to this class which has to be done in the constructor...
}
}
当我调用子函数的新实例时,行“$ this-> init();”在Apache错误日志中触发以下错误:
[error] [client ip] PHP Parse error: syntax error, unexpected T_STRING,
expecting T_FUNCTION in ... on line... referrer:...
我的理由是我在子类的构造函数中有我需要做的事情但是我不能在那里有构造函数,否则不会处理父元素的构造函数。所以我创建了一个子节点,它从父节点中提取函数并执行__constructor函数。该函数调用(child)的init()函数,该函数具有子特定逻辑并继续执行。
我唯一的猜测是它正在调用一个尚未读入内存的函数 - 但我认为PHP在执行__constructor函数之前将整个文件读入内存。我已经看过是否有预加载函数,但除了做一个包含语句之外还没有找到任何东西 - 但我觉得这是错误的轨道。
非常感谢任何帮助!
编辑:介绍一些不相关的细节。
答案 0 :(得分:1)
在您的子类中调用父构造函数
class SubClass extends BaseClass {
function __construct() {
parent::__construct();
print "In SubClass constructor\n";
}
}