调用名称存储在变量中的对象的方法 - PHP

时间:2018-04-13 20:15:50

标签: php

这个问题可能听起来很愚蠢,但我希望这个有用。我有这个代码:

$data['method'] = 'get';
$this->app->$data['method']();

如何将$data['method']替换为get但不使用字符串。我试过这个,但没有运气。

$this->app->{$data['method']}();

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

这将有效:

call_user_func(array($this->app, $data['method']));
祝你好运。

答案 1 :(得分:1)

如果您使用的是 PHP 5.4.0及更高版本,那么您发布的最后一个代码应该有效。

<?php

class A {
    public function foo() {
        echo "yes!";
    }
}

class B {
    public function run() {

        $this->a = new A;

        $data = [];
        $data['method'] = "foo";        
        $this->a->{$data['method']}();        

    }
}

$b = new B;
$b->run();
// Prints "yes!"