對於弱型別語言來說,php函式過載,並不像一般的oop那樣。
因為函式過載必須滿足兩個條件:
1、函式引數的個數不一樣。
2、引數的型別不一樣。
這兩點,php都沒有辦法滿足,您可以對函式多新增引數,只是相當於多傳了個臨時變數。而弱型別本來就不區分,所以無法通過這些來實現。
但是,可以通過下面的方法來實現簡單的偽過載吧。
1、預設引數
從這個上面就可以看到,如果乙個函式裡面,我對不是必須引數填寫新增相應的預設值,就可以完成相應的功能。
function overloadfun($param1, $param2 = '1',$param3 = true)
2、利用函式func_get_args()和call_user_func_array(),詳細的幫助參照php手冊。
利用乙個有規則的函式進行呼叫,以方便統一管理。
function overloadfun() function overloadfun0() function overloadfun1() function overloadfun2()
3、利用__call($name, $arg) 函式進行處理。
function __call($name, $args) } } function overloadfun0() function overloadfun1() function overloadfun2()
總結,這幾種方法,都可以實現偽過載,基本第2種和第3種,內容可以相互處理判斷。
文中只是給出了方法,可能還有許多細節地方需要處理,比如,判斷整型、類別等。
不過,根據上面的內容,php可能永遠不會出現真正的過載,那樣就會失去語言本身的意義了。
PHP小技巧之函式過載
1.可以使用func get args 和func num args 這兩個函式實現函式的過載 php 複製 如下 function rewrite else if func num args 2 function func1 arg function func2 arg1,arg2 rewrite...
php過載和重寫 PHP過載
整理思路時想到乙個問題 php為什麼不允許同名函式存在?即不允許常見於其他語言的過載機制?過載和重寫 先區分一下過載 overload 和重寫 override 過載指多個名字相同,但引數不同的函式在同一作用域並存的現象 重寫出現在繼承中,指子類重定義父類功能的現象,也被稱為覆蓋。過載中說的引數不同...
mysql 函式過載 C 方法過載(函式過載)
在講解 c 構造方法 時提到定義構造方法時提到可以定義帶 0 到多個引數的構造方法,但構造方法的名稱必須是類名。實際上,這就是乙個典型的方法過載,即方法名稱相同 引數列表不同。引數列表不同主要體現在引數個數或引數的資料型別不同。在呼叫過載的方法時系統是根據所傳 遞引數的不同判斷呼叫的是哪個方法。例項...