PHP更改方法/功能可见性

8 php oop

我正在尝试编写一个PHP类,在其中我将一些方法的可见性从protected更改为public.我相信我记得你可以在C++中做到这一点,但我做了一些搜索,我没有在PHP中提出任何相关内容.有谁知道这在PHP中是否可行?

例如,假设这个类:

 class ABC {
     protected function foo() {
          // Do something
     }
  }

  class DEG extends ABC {
      // can I make foo public now?
  }
Run Code Online (Sandbox Code Playgroud)

Jon*_*Jon 13

从基类派生时,您可以更改成员的可见性,如下所示:

class Base
{
    protected function foo() {}
}

class Derived extends Base
{
    public function foo() { return parent::foo(); }
}
Run Code Online (Sandbox Code Playgroud)

您也可以对属性执行相同操作(将属性重新定义protectedpublic).

但是,请注意,如果基本属性是,private那么您实际上不会增加​​其可访问性,而是声明具有相同名称的新属性.这不是函数的问题,就像您尝试调用private基本方法一样,您会立即收到运行时错误.