0
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();
  }
}

致命的なエラー:コンテキスト'ビュー'からプライベートメソッドDB:: ReturnSomeData()を呼び出します

ViewクラスからReturnSomeData()メソッドにアクセスするにはどうすればよいですか?「ゲートウェイ」のようなものはありますか?

class Master {
... }

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

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

これが今の私の写真ですが、本当に迷っています。アイデアは、ある子クラスから別の子クラスへのプライベートメソッドにアクセスしたいということです。

4

1 に答える 1

2

選択する必要があります:

  • ReturnSomeData()プライベートにしたいですか?結構です。外部のクラス[サブクラスでさえも]からアクセスすることはできません。
  • アクセスしたいReturnSomeData()ですか?それを作りなさいpublic

アイデアは、private[またはprotected]フィールドを作成し、場合によってはパブリックアクセサーを作成することです。これは、カプセル化の主要なポイントの1つです。

于 2012-09-27T01:04:31.837 に答える