php:如何使用名称作为变量调用对象及其方法
我需要为我的php项目的插件创建一个通用调用程序。我需要根据表单字段调用模型(POST): 这也不起作用:php:如何使用名称作为变量调用对象及其方法,php,oop,reflection,Php,Oop,Reflection,我需要为我的php项目的插件创建一个通用调用程序。我需要根据表单字段调用模型(POST): 这也不起作用: $data = call_user_func_array($moduleName.'::method',array($params)); print_r($data); 为什么? 是这样吗?我收到ReflectionClass:method()“未找到或函数名无效”错误 如何通过变量名和函数名(也作为变量)调用类的新实例?我想您的意思是: $className = 'Y
$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
显然,如果试图调用的方法是静态的,则不需要实例化类
$module = new $className();
$reflector = new ReflectionMethod($module, $methodName);
$reflector->invokeArgs($module, $params); // call_user_func_array() equivalent