我有一节课是这样的
class a {
private $one;
private function abc() {
$this->one = "I am a string";
return $this;
}
$call = new a;
$call->abc()->other_function();
在我使用matutor方法时,php在调用函数abc()时发现了一个致命错误。它说从上下文调用私有方法xxx。
我所知道的oop是非常新的,私有方法/属性只能在同一个类中使用。然而,我不能调用abc(),即使它在同一个类中。
怎么会?
因为您不是在类内部调用方法,所以您是在类代码外部调用方法。
$call = new a;
$call->abc()->other_function();
这在类的上下文之外,这就是为什么会出现致命错误的原因。
Private
只能在类本身中使用。
受保护的
只能在类本身和子类中使用。
Public
可以在任何地方使用。
class a {
private $one;
public function abc() { //notice the public
$this->one = "I am a string";
return $this->one;
}
}
$call = new a;
echo $call->abc();