如何在类中调用php中的变量函数?

时间:2013-08-14 17:26:31

标签: php function

我有以下示例代码

<?php

class Test {
    function foo() {
        print "foo\n";
    }

    function bar() {
        $func = 'foo';
        $func();
    }
}

$test = new Test();
$test->bar()

调用$test-bar(),内部调用名为foo的变量php函数。此变量包含字符串foo,我希望函数foo被称为like here。而不是获得预期的输出

foo

我收到错误:

PHP Fatal error:  Call to undefined function foo()  ...

当使用字符串作为函数名时,如何正确执行此操作?字符串'func'可能表示实际代码中类范围内的几个不同函数。

根据the doc,上面应该像我编码的那样工作,或多或少......

3 个答案:

答案 0 :(得分:5)

<?php

class Test {
    public function foo() {
        print "foo\n";
    }

    public function bar() {
        $func = 'foo';
        $this->$func();
    }
}

$test = new Test();
$test->bar();

?>

使用它来访问此类的当前功能

答案 1 :(得分:0)

您使用关键字$this

<?php

class Test {
    function foo() {
        print "foo\n";
    }

    function bar() {
        $this->foo(); //  you can do this

    }
}

$test = new Test();
$test->bar()

有两种方法可以从字符串输入中调用方法:

$methodName = "foo";
$this->$methodName();

或者您可以使用call_user_func_array()

call_user_func_array("foo",$args); // args is an array of your arguments

call_user_func_array(array($this,"foo"),$args); // will call the method in this scope

答案 2 :(得分:0)

您可以使用函数call_user_func()来调用回调。

<?php

class Test {
    public function foo() {
        print "foo\n";
    }

    public function bar() {
        $func = 'foo';
        call_user_func(array($this, $func));
    }
}

$test = new Test();
$test->bar();