Php 如何将类成员作为闭包调用?
我试图让下面的例子起作用。看起来PHP认为$this->getData2是一个成员变量。如何使PHP将其视为一种方法Php 如何将类成员作为闭包调用?,php,closures,Php,Closures,我试图让下面的例子起作用。看起来PHP认为$this->getData2是一个成员变量。如何使PHP将其视为一种方法 class Test { public function getData() { return array( 'data1'=>array('name'=>'david'), 'data2'=>$this->getData2 ); } pub
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();
}
最简单的方法是在数组外的变量中进行计算,然后将变量放入数组中最简单的方法是在数组外的变量中进行计算,然后将变量放入数组中尝试:
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']();
尝试:
可调用的方法是一个数组,对象作为第一个成员,方法名作为第二个成员 因此:
可调用的方法是一个数组,对象作为第一个成员,方法名作为第二个成员 因此: 没有$data=$test->$data['data2']上的$test->就无法工作;线 因为我喜欢小提琴: 没有$data=$test->$data['data2']上的$test->就无法工作;线 因为我喜欢小提琴:
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']();
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;