我試圖爲記憶網站製作一個成就係統(「你記憶50張卡片」等),而我嘗試使用的方法是匿名數組功能:PHP - 作爲靜態數組元素的匿名函數
class AchievementController extends Controller
{
private static $rules = array(
'card'=>array(
1=>function() {
//do check for achievement
},
2=>function() {
//do check for achievement
}
),
'set'=>array(
5=>function() {
//do check for achievement
},
6=>function() {
//do check for achievement
},
)
);
//...
}
的想法是,爲成就某些類型的規則將在特定的時間,也就是當你學習新卡檢查時,card
子集將被檢查。我曾希望使用foreach
循環是這樣的:如果我宣佈$rules
內
PHP Parse error: syntax error, unexpected 'function' (T_FUNCTION) in
/.../controllers/achievement.php on line 24
:
foreach(self::$rules[$type] as $rule)
{
$rule();
}
然而,當我嘗試申報$rules
陣列,我得到這個錯誤一個函數(不是靜態的),它工作得很好。我不能把它放在構造函數中,因爲這個類是靜態使用的,所以不會調用構造函數。
我的問題是,我有可能在靜態數組中做到這一點?或者我應該只是去做別的事情?
(額外的問題:是否有比這更好的方式來做到的成就)
你運行的是什麼版本的PHP ...匿名函數直到5.3纔可用。 – Orangepill
爲什麼這麼多關閉?似乎不太可能所有的邏輯是互斥的?因此,考慮子類化和使用多態性。 –
@Orangepill,我使用的是5.3版本。 – musicnothing