在oop語言中,過載是定義乙個和已有方法同名的方法,當然,返回值,或者引數型別會發生改變。
但是,在php中,過載完全不是這種概念。php 中的過載是建立乙個沒有定義的方法或者屬性。
php中過載函式相對於過載屬性有點難理解,但也是可以理解的。過載函式本質上是對php中可變函式的一種使用。在oop語言中,沒有所謂的可變函式的說法,也沒有類似的功能。然而,可變函式的使用,一定會導致**的可讀性變差。那麼,php中,過載函式到底是什麼呢?其實,就是在類的內容定義乙個可變函式__call($func,$arg)
,然後,在使用該類的例項的時候,就可以使用該可變函式定義好的函式,也就是所謂的」過載函式「
來看乙個過載屬性的例子:
class
car
public
function
__get
($key)
return
null;
}public
function
__isset
($key)
return
false;
}public
function
__unset
($key)
}$car = new car();
$car->name = '汽車'; //name屬性動態建立並賦值
echo
$car->name;
和乙個過載函式的例子:
class
car
}}$car = new car();
$car->speedup(); //呼叫不存在的方法會使用過載
echo
$car->speed;
從這個過載函式的例子可以看出,這種對於函式的過載並沒有什麼實際的意義。畢竟,在實際需求中,往往不需要過載乙個叫speedup
的函式。如果,我們在自己的類中過載乙個其他的函式,比如叫say
,但是意義也並不明顯。通過這種容易產生歧義的方式去定義函式,必然大大降低**的可讀性。實際開發中,還不如直接定義乙個叫say
的方法來得時在。
另外,例子**來自幕客網
php過載和重寫 PHP過載
整理思路時想到乙個問題 php為什麼不允許同名函式存在?即不允許常見於其他語言的過載機制?過載和重寫 先區分一下過載 overload 和重寫 override 過載指多個名字相同,但引數不同的函式在同一作用域並存的現象 重寫出現在繼承中,指子類重定義父類功能的現象,也被稱為覆蓋。過載中說的引數不同...
可笑的中國足球
11月17日晚,我笑著看完了中國對香港的比賽的全場。風雨飄搖的中超聯賽,中國足球就在足協的 無恥 嘴臉的映襯下,國家隊與香港隊這場被足協 要挾國際足聯 說會出現 難以預計的結果 的比賽,顯得尤為可笑。天河體育中心,仍有數萬熱心球迷到席,中國以乙個進球數之差失去小組出線機會這個事實顯得更加讓人遺憾和痛...
php中的過載
php中的 過載 與其它絕大多數物件導向語言不同。傳統的 過載 是用於提供多個同名的類方法,但各方法的引數型別和個數不同。php所提供的 過載 overloading 是指動態地 建立 類屬性和方法,是通過魔術方法 magic methods 來實現的。具體來說分為兩類 1.屬性過載 public ...