为什么这个抽象类在php中返回致命错误

时间:2011-02-17 18:39:37

标签: php php-5.3

abstract  class MyAbstractClass{
    abstract  protected function doSomeThing();
    function threeDots(){
        return  "...";
    }
}
class MyClassA extends  MyAbstractClass{
    protected function doSomeThing(){
        $this->threeDots();
    }
}
$myclass = new MyClassA();
$myclass->doSomething();

这是正在吐出的错误“致命错误:从第10行的test.php中的上下文调用受保护的方法MyClassA :: doSomething()。”我试图知道这个错误的原因。

4 个答案:

答案 0 :(得分:3)

您已声明函数doSomething被保护,这意味着它只能在父类,子类或其自身内使用。你在那之外使用它。

您可以尝试更改

abstract  protected function doSomeThing();

abstract public function doSomeThing();

protected function doSomeThing(){

public function doSomeThing() {

答案 1 :(得分:2)

受保护意味着此方法在类和类中可用,它继承此类。如果你想从“外面”调用它,你应该使用Public。

答案 2 :(得分:1)

方法受到保护你不能在类之外调用此方法以及此类继承的类。

如果你想在课外打电话,请公开。

答案 3 :(得分:0)

您只能从类本身或任何子类中调用受保护的方法。我建议你看一下the visibility entry in the PHP manual