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

方法的可调用对象是一个数组,其中对象作为第一个成员,方法名称作为第二个成员。

所以:

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;

没有 $test-> 就无法$data = $test->$data['data2']();工作

因为我喜欢小提琴: 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 回答