1

次の例を機能させようとしています。PHPは$this->getData2メンバー変数として考えているようです。PHPがそれをメソッドと見なすようにするにはどうすればよいですか?

class Test {

    public function getData()
    {
        return array(
            'data1'=>array('name'=>'david'),
            'data2'=>$this->getData2
        );
    }

    public function getData2()
    {
        return "hello"
    }

}

$test = new Test;
$data = $test->getData();

$data = $data['data2']();

私は次のことを試しましたが、次のように見えます..この場合、$thisは使用できません

function() use($this) {
   return $This->getData2();
}
4

4 に答える 4

2

メソッドの callable は、オブジェクトを最初のメンバーとし、メソッド名を 2 番目のメンバーとする配列です。

そう:

class Test {

    public function getData()
    {
        return array(
            'data1'=>array('name'=>'david'),
            'data2'=>array($this, 'getData2')
        );
    }

    public function getData2()
    {
        return "hello";
    }

}

$test = new Test;
$data = $test->getData();

$data = $data['data2']();
于 2013-08-14T00:27:15.777 に答える
2
class Test {

    public function getData(){
        return array(
            'data1'=>array('name'=>'david'),
            'data2'=>'getData2'
        );
    }

    public function getData2()    {
        return "hello";
    }

}

$test = new Test;
$data = $test->getData();

$data = $test->$data['data2']();

echo $data;

$data = $test->$data['data2']();行に $test-> がないと機能しませんでした

私はフィドルが大好きなので: http://phpfiddle.org/main/code/4f5-v37

于 2013-08-14T00:29:03.577 に答える
1

試す:

class Test {
  public function getData(){
    return array('data1' => array('name' => 'david'), 'data2' => 'getData2');
  }
  public function getData2(){
    return 'hello';
  }
}
$test = new Test; $data = $test->getData(); echo $test->$data['data2']();
于 2013-08-14T00:25:36.550 に答える
0

最も簡単な方法は、配列の外側の変数で計算を行い、その変数を配列に入れることです

于 2013-08-14T00:22:31.463 に答える