我想要一個函數字典。有了這個字典,我可以有一個接受函數名和參數數組的處理程序,並執行該函數,返回它返回的值,如果它返回任何東西。如果名稱與現有函數不對應,則處理程序將拋出錯誤。如何在PHP中創建函數字典?
這將是很容易實現的Javascript:
var actions = {
doSomething: function(){ /* ... */ },
doAnotherThing: function() { /* ... */ }
};
function runAction (name, args) {
if(typeof actions[name] !== "function") throw "Unrecognized function.";
return actions[name].apply(null, args);
}
但由於功能是不是真的在PHP第一類對象,我無法弄清楚如何輕鬆地做到這一點。有沒有一個相當簡單的方法來在PHP中做到這一點?
只關心爲什麼你需要這個,爲什麼不使用靜態類呢? – Eugene
「但是由於函數不是PHP中的第一類對象」不是。匿名函數(這是你的代碼顯示的)是常規的PHP對象,類Closure(http://php.net/manual/en/class.closure.php) – newacct