0
這是一個語法問題,我想......我有類名的數組,我在一家工廠用來生成按對象類型代碼對象:PHP調用類的靜態方法的類名
$array = ['a' => '\namespace\AClass', 'b' => '\namespace\BClass'];
我可以從字符串名稱將這些類別實例就好:
$classname = $array['a'];
return new $classname($arg1, $arg2);
我所試圖做的是調用數組或字符串中指定的類的靜態方法,而無需初始化對象 - 這是如:
$classname = $array['a'];
return $classname::formatArg($arg1);
顯然,這是行不通的,因爲$ classname是一個字符串,所以我該如何告訴PHP我試圖訪問該名稱的對象?
你確定這不工作?如果是這樣,你可以使用call_user_func。它適用於類方法,無論是實例還是靜態。 – ToBe 2014-10-16 15:03:52
你有什麼錯誤?我運行了這個簡單的版本,它的工作原理。 'class AClass {static} formatArg($ arg1){echo $ arg1; } } $ array = array('a'=>'\ AClass','b'=>'\ namespace \ BClass'); $ arg1 ='hello'; $ classname = $ array ['a']; var_dump($ classname); $ classname :: formatArg($ arg1);' – slapyo 2014-10-16 15:09:11
它會工作.... – hek2mgl 2014-10-16 15:11:32