我正在使用旧的 Cakephp 版本 0.2.9
我试图写一个构造函数
function __construct
并且
function __construct()
具有相同的类名
但是所有的错误都像致命错误:在..中的非对象上调用成员函数 init()
我正在使用旧的 Cakephp 版本 0.2.9
我试图写一个构造函数
function __construct
并且
function __construct()
具有相同的类名
但是所有的错误都像致命错误:在..中的非对象上调用成员函数 init()
问题中没有详细信息,但很可能已定义的新构造函数没有调用父级
IE
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();
单独修复第一个问题仍然会导致抛出异常,因为子构造函数没有与父方法相同的参数,因此无法将缺少的参数传递给父方法。