Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP从一个子级访问另一个子级的私有方法_Php_Oop_Inheritance - Fatal编程技术网

PHP从一个子级访问另一个子级的私有方法

PHP从一个子级访问另一个子级的私有方法,php,oop,inheritance,Php,Oop,Inheritance,致命错误:从上下文“视图”调用私有方法DB::ReturnSomeData() 如何从视图类访问ReturnSomeData()方法?有类似“网关”的东西吗 class Master{ protected static $DB; function __construct(){ static::$DB = new DB(); $view = new View(); } } class DB extends Master{ private function Retu

致命错误:从上下文“视图”调用私有方法DB::ReturnSomeData()

如何从视图类访问ReturnSomeData()方法?有类似“网关”的东西吗

class Master{
  protected static $DB;
  function __construct(){
    static::$DB = new DB();
    $view = new View();
  }
}

class DB extends Master{
  private function ReturnSomeData(){
    return $data;
  }
}

class View extends Master{
  public function ViewData(){
    $DBdata = static::$DB->ReturnSomeData();
  }
}
这是我现在的照片,但我真的迷路了。 我的想法是希望从一个子类访问另一个子类的私有方法

您必须选择:

  • 您想保持
    ReturnSomeData()
    私有吗?很好,您将无法从类外(甚至子类)访问它
  • 是否要访问
    ReturnSomeData()
    ?将其公开
这样做的目的是使
私有
[或
受保护
]字段和公共访问器成为可能,这是的要点之一。

如果您要添加一个“网关”方法,允许您基于例如您传递的参数访问私有方法,这会有点违背私有方法的目的,你最好将它们公开,因为它们将是公开的。
class Master {
... }

class DB extends Master{
...
  public function PassItToMe(){
    return $this;
  }
}

class View extends Master{
  public function ViewData(){
    $DBdata = static::$DB->PassItToMe()->ReturnSomeData();
   }
}