這個怎麼樣,使用ternary ?:
operator:
function addString($text, $add, $type = 'prepend') {
return $type=='prepend' ? $add . $text : $text . $add;
}
注:其實我可能不會使用 - 並保持了經典的if/else:不是一個襯墊,不太好閱讀......但可能更容易理解;並有可理解的代碼是非常重要的。註釋後
編輯:如果你想確保$type
或者是'append'
或'prepend'
,並仍然希望一行程序,你可以用的東西是這樣的:
function addString($text, $add, $type = 'prepend') {
return ($type=='prepend' ? $add . $text : ($type=='append' ? $text . $add : ''));
}
但是,你的代碼將變得難以閱讀 - 現在是時候去做一些比一行代碼更長的東西,而且更容易理解。
例如,爲什麼沒有這樣的事情:
function addString($text, $add, $type = 'prepend') {
if ($type === 'prepend') {
return $add . $text;
} else if ($type === 'append') {
return $text . $add;
} else {
// Do some kind of error-handling
// like throwing an exception, for instance
}
}
畢竟,行數已經在路上幾乎沒有影響的代碼被執行 - 並再次,重要的是你的代碼很容易理解和維護。
無論我的答案如何,我不得不說,爲此創建一個函數可能是不必要的,除非您可能在不知道是否需要預先安排/附加。 (即:不要使用這個來代替'$ text。= $ add'等) – 2011-04-05 20:16:45