我想在類中爲PHP中的數組分配匿名函數,但是我一直在語法錯誤上磕磕絆絆。是否可以在類範圍中定義一個匿名函數?
class Stuff {
private $_preference_defaults = array(
'cookie' => true,
'session' => true,
'database' => true,
'filter' => function($input) { return true; },
'sanitizer' => function($input) { return $input; },
);
};
會拋出unexpected T_FUNCTION
語法錯誤,並不要緊陣列是否是靜態的。我絕望了,並試圖做它的「舊」的方式:
class Stuff {
private $_preference_defaults = array(
'cookie' => true,
'session' => true,
'database' => true,
'filter' => create_function('$input', 'return true;'),
'sanitizer' => create_function('$input', 'return $input;'),
);
};
而這導致了unexpected '(', expecting ')'
語法錯誤。但是,如果我定義的時間提前的功能,它確實工作:
class Stuff {
function _preference_default_filter($input) {
return true;
}
function _preference_default_sanitizer($input) {
return true;
}
private $_preference_defaults = array(
'cookie' => true,
'session' => true,
'database' => true,
'filter' => _preference_default_filter,
'sanitizer' => _preference_default_sanitizer,
);
};
然後我可以調用類方法中的那些功能:
function do_stuff($foo) {
return $this->{$this->_preference_defaults['filter']}($foo);
}
這不僅是在我的腦海裏,它帶有糟糕的風格,我可以想象這種欺騙會在未來引起頭痛。
- 我是否無法在類(靜態)範圍創建匿名函數? (我想也許是因爲在這種情況下無法創建一個有效的Closure對象?)
- 是否還有更多... PHP ...意味着同一目的?也就是說,是否有一種「更好」的方式將簡單的默認回調分配給類範圍中的數組值?我提供的最後一部分工作確實完成了工作,但我更希望有一個解決方案,不會讓我向驗光師詢問更強大的處方。
有道理;謝謝! – 2012-02-08 13:10:59