在这个例子中,我得到了预期的致命错误"fatal error:Using$this when not In object context"
class ctis_parent{
public function objFunc(){
var_dump('Called succes');
}
public static function call(){
$this->objFunc();
}
public function __construct(){
self::call();
}
}
new ctis_parent();
但若从call()方法的定义中移除static关键字都能正常工作,为什么呢?
class ctis_parent{
public function objFunc(){
var_dump('Called succes');
}
public function call(){
$this->objFunc();
}
public function __construct(){
self::call();
}
}
new ctis_parent();
//string 'Called succes' (length=13)
根据定义,静态函数不需要实例化类,因此它无法访问指向当前实例的$this->
引用。如果一个实例不存在,就无法指向它。这很有道理。
因为不在对象中时使用$this
。嗯,你不是真的,但有了静态声明,人们可以做:
ctis_parent::call();
其中,$this
将是非法的。
有关静态,请参阅文档。