0

我需要为我的 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() 'not found or invalid function name' 错误。

如何从变量和函数名称中按名称调用类的新实例也作为变量?

4

1 回答 1

1

我想你的意思是:

$className  = 'YourClassName';
$methodName = 'classMethodName';
$module     = new $className();                // create new class instance
$data       = $module->{$methodName}($params); // call your method

if$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

显然,如果您尝试调用的方法是静态的,则您不需要实例化您的类。

于 2013-11-01T19:22:10.587 回答