2013-11-01 61 views
0

我需要爲我的php項目創建一個通用的插件。我需要根據表單字段(POST)調用模型:php:如何調用一個對象及其名稱作爲變量的方法

$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或invalid function name'錯誤。

如何通過名稱變量和函數名稱也作爲變量調用類的新實例?

回答

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); 

既然你標記這個,這裏的其他方式:

$module = new $className(); 
$reflector = new ReflectionMethod($module, $methodName); 
$reflector->invokeArgs($module, $params); // call_user_func_array() equivalent 

顯然你不需要安裝如果您嘗試調用的方法是靜態的,請命名您的類。

+0

非常感謝@onetrickpony,你是金! – jakubplus

相關問題