提问者:小点点

对私有方法的php oop调用


我有一节课是这样的

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(),即使它在同一个类中。

怎么会?


共2个答案

匿名用户

因为您不是在类内部调用方法,所以您是在类代码外部调用方法。

$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();