0

次のようなPHPクラスがあります

<?php
class Test{
  var $conf = array('a' => 1, 'b' => 2, c => 3);

  private function do_something(){
    // Do something Here
    function do_something_else(){
      // How to get the variable value for $conf ???? o.O
    }
  }
}
?>

$conf関数内にアクセスしたいdo_something_else()。上位レベルの関数では、これに としてアクセスできますが、内部関数では使用できないと$this->conf思います。$thisその関数内の変数にアクセスするための最良の方法は何でしょうか?

この関数は WordPress CMS の組み込み関数によって呼び出されるため、値を渡すことができないため、ここでは引数を渡すことはできません。

4

2 に答える 2

3

必要なのは匿名関数だと思います。ここにいくつかの解決策があります。PHP 5.3 でできること:

 class Test{
    var $conf = array('a' => 1, 'b' => 2, 'c' => 3);

    private function do_something(){
        // Do something Here
        $that = $this;
        $do_something_else = function() use($that) {
            echo $that->conf;
        };

        $do_something_else();   
    }
}

または匿名$this関数で直接使用しますが、PHP 5.4 のみです。

于 2012-09-15T08:09:26.167 に答える
1

シンプルにしない理由

すなわち

<?php
class Test{
  private $conf;

  private function _construct()
  {
     $this->conf = array('a' => 1, 'b' => 2, c => 3);
  }
  private function do_something_else(){
      // How to get the variable value for $conf ???? o.O
      // NOW THIS BIT IS EASY $this->conf;
  }
  private function do_something(){
    // Do something Here

  }
}
?>
于 2012-09-15T08:11:24.933 に答える