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()。”我试图知道这个错误的原因。
答案 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。