我试图覆盖一个方法,但我得到一个错误,该函数无法找到。下面是一个例子:
abstract class a {
public function build(){
$this._loadComponents();
return $this;
}
abstract protected function _loadComponents();
}
class b extends a {
protected function _loadComponents(){
echo "test";
}
}
$b = new B();
$b->build();
导致:致命错误:调用未定义的函数
我做错了什么?
第3行的$this.
应为$this->
。.
是PHP中的一个连接操作符
使用
$this->_loadComponents();
不是$this._loadComponents();
dot(.)操作符用于连接两个或多个字符串,而this(->)操作符用于访问类属性和函数。
在php .
是一个连接标记,你应该使用$this->_loadComponents()
看这个:
<?php
abstract class a {
public function build(){
$this->_loadComponents();
return $this;
}
abstract protected function _loadComponents();
}
class b extends a {
protected function _loadComponents(){
echo "test";
}
}
$b = new B();
$b->build();
?>