我正在编写一个应用程序(php),它需要一个很长的列表相似但不同的功能,由一组按键调用:
$functions = [
"do this" => function() {
// does this
},
"do that" => function() {
// does that
}
]
etc.
我选择将相似的函数放在一个数组中,因为它们不相似enough- 使用一个充满条件语句的大函数获得相同的结果是行不通的。和我确实需要只能通过按键呼叫他们, 例如:
$program = ["do this", "do that", "do this"];
foreach ($program as $k => $v) {
$functions[$v]();
}
问题是这个函数数组结构引起了很多问题,例如我遇到了困难从一个数组函数调用另一个数组函数,例如这不起作用:
"do that" => function() {
$functions["do this"]();
}
也不是这个:
"do that" => function() {
global $functions;
$functions["do this"]();
}
or this:
"do that" => function($functions) {
$functions["do this"]();
}
$functions["do that"]($functions);
我想我可以拥有一个很长的巨大功能switch语句:
function similar_functions($key) {
switch ($key) {
case "do this":
// does this
break;
case "do that":
// does that
break;
}
}
但这似乎并不是一个好的做法。或者也许是这样?
那么,我有什么选择呢?我应该采用 switch 结构吗?或者还有其他更好的解决方案吗?