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