我需要为我的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()'找不到或函数名称无效'错误。
如何通过名称从变量和函数名称调用类的新实例作为变量?
答案 0 :(得分:1)
我认为你的意思是:
$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);
由于您标记了此reflection,因此这是另一种方式:
$module = new $className();
$reflector = new ReflectionMethod($module, $methodName);
$reflector->invokeArgs($module, $params); // call_user_func_array() equivalent
显然,如果您尝试调用的方法是静态的,则不需要实例化您的类。