我正在研究旧的cakephp版本0.2.9
我试着写一个构造函数
函数__construct和 函数__construct()并具有相同的类名
但所有错误都像致命错误:调用非对象中的成员函数init()
请尽快帮助
由于
答案 0 :(得分:2)
问题中没有细节,但是已经定义的新构造函数很可能不会调用父
即
class Parent {
protected $_name = '';
public function __construct($name) {
$this->_name = $name;
}
public function greet() {
if (!$this->_name) {
throw new Exception("I got no name");
}
return sprintf('Hi, I\'m %s', $this->_name);
}
}
class Child extends Parent {
public function __construct() {
// some logic
}
}
上面的代码示例中有两个错误
第一个错误的结果是这有效:
$Parent = new Parent('Bob');
echo $Parent->greet();
虽然这会引发异常:
$Child = new Child('Boblini');
echo $Parent->greet();
单独解决第一个问题仍然会导致抛出异常,因为子构造函数与父方法没有相同的参数,因此它不能将缺少的参数传递给父方法。