我需要为我的php项目的插件创建一个通用调用器。我需要调用基于表单字段 (POST) 的模型:
$moduleName = new ReflectionClass($module);
$data = $moduleName->method($params);
print_r($data);
这也不起作用:
$data = call_user_func_array($moduleName.'::method',array($params));
print_r($data);
为什么?
这是对的吗?我收到 ReflectionClass:method() "未找到或无效的函数名称"错误。
如何从变量中按名称调用类的新实例,并将函数名称也作为变量调用?
我想你的意思是:
$className = 'YourClassName';
$methodName = 'classMethodName';
$module = new $className(); // create new class instance
$data = $module->{$methodName}($params); // call your method
如果$params
是一个数组,并且您希望将其作为多个参数传递给您的方法:
$data = call_user_func_array(array($module, $methodName), $params);
由于您标记了此反射,因此这是另一种方法:
$module = new $className();
$reflector = new ReflectionMethod($module, $methodName);
$reflector->invokeArgs($module, $params); // call_user_func_array() equivalent
显然,如果您尝试调用的方法是静态的,则不需要实例化您的类。