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