沒搞懂呀,求解
? ? public function __call($name, $args) {
? ? if ($name == 'speedDown') {
? ? ? ? $this->speed -= 10;
? ? }
}
$name, $args ?這兩個(gè)值是做什么用的, ? 還有 ?都知道函數(shù)不存在了 ?為什么還調(diào)用呀
? ? public function __call($name, $args) {
? ? if ($name == 'speedDown') {
? ? ? ? $this->speed -= 10;
? ? }
}
$name, $args ?這兩個(gè)值是做什么用的, ? 還有 ?都知道函數(shù)不存在了 ?為什么還調(diào)用呀
2016-10-24
舉報(bào)
2016-10-24
首先要理解函數(shù)的重載,就是同一個(gè)函數(shù)名,傳遞不同參數(shù),來實(shí)現(xiàn)不同的方法內(nèi)容。
但php里是不能直接實(shí)現(xiàn)的,要通過__call方法。
所謂的函數(shù)不存在,是指函數(shù)沒有在類中定義,但你可以在__call方法中定義這個(gè)函數(shù)的內(nèi)容,這個(gè)函數(shù)的名字就是$name承載的值,而$args就是這個(gè)函數(shù)傳遞的參數(shù)。
上面是一個(gè)__call方法使用的舉例,實(shí)例$x調(diào)用foo方法,類中沒有,執(zhí)行__call方法,__call方法則根據(jù)foo的參數(shù)不同,調(diào)用了類中的兩個(gè)私有方法,從而實(shí)現(xiàn)了函數(shù)的重載。
2020-01-26
感謝呀~ 我丟
2017-01-17
不應(yīng)該這么理解,php中的重載和java中的重載不是一個(gè)概念,在php中,重載應(yīng)該就是動(dòng)態(tài)創(chuàng)建和賦值
2017-01-17
回答得非常好,同感謝?。?!