<?php
class Foo
{
function Variable()
{
$name = 'Bar';
$this->$name(); // This calls the Bar() method
}
function Bar()
{
echo "This is Bar";
}
}
$foo = new Foo();
$funcname = "Variable";
$foo->$funcname(); // This calls $foo->Variable()
?>
在本例中,请确保函数do_the_thing存在。还要注意,您正在存储函数的返回值:
$req = $class->$function_name();
尝试查看变量$req包含的内容。例如,这应该会给您提供以下信息:
print_r($req); // or simple echo as per return value of your function
$functionName = 'myMethod';
$myClass = new MyClass();
$reflectionMyMethod = (new ReflectionClass($myClass))->getMethod($functionName);
$relectionMyMethod->invoke($myClass); // same as $myClass->myMethod();
4条答案
按热度按时间q1qsirdb1#
是的,这是可能的,即已知为变量函数,有**look at this.**
示例来自PHP官方网站:
在本例中,请确保函数
do_the_thing
存在。还要注意,您正在存储函数的返回值:尝试查看变量
$req
包含的内容。例如,这应该会给您提供以下信息:备注:
变量函数不能与
echo(), print(), unset(), isset(), empty(), include(), require()
等语言结构一起使用。利用 Package 函数将这些结构用作变量函数。42fyovps2#
最简单的例子是:
**${$function_name}**是诀窍
也适用于静态方法:
ehxuflar3#
也可以试试这个(注意大括号{}):
v09wglhw4#
您可以使用
ReflectionClass
。范例:
如果方法不存在,请记住捕获ReflectionException。