試圖用PHP實現method overloading(不要與PHP manual的重載定義混淆),不容易有明顯的折衷,因爲PHP的性質你必須有一個方法並且if
或switch
聲明裏面提供重載,它創建的程序代碼難以用長方法讀取。在PHP中重載方法是不好的做法?
在PHP中有方法重載有什麼好處,它可以以任何其他方式實現嗎?
class MyClass {
public function doMany($input) {
if (is_array($input)) {
...
} else if (is_float($input)) {
...
}
}
}
與傳統方法
class MyClass {
public function doArray(array $input) {
...
}
public function doFloat(float $input) {
...
}
}
這個問題既感覺非常寬泛,也非常基於我的意見。它*可能會在https://softwareengineering.stackexchange.com/的主題上更多,但請首先仔細閱讀其常見問題解答。如果你可以描述一個你想要解決的更具體的問題,你可能會得到更好的答案 - 很難提供可能適用於方法重載的各種可能方案。 – IMSoP
如果您不想使用'switch',那麼將'gettype()'與動態定義的方法名稱結合起來用於每種類型的單獨方法調用 –