我有以下示例代码
<?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,上面应该像我编码的那样工作,或多或少......
答案 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();