我不知道是否有任何好的理由,爲什麼這種行爲可能在當前的PHP 5.4的實現:PHP 5.4:爲什麼類可以用不同的簽名覆蓋特徵方法?
trait T {
public function test(PDO $pdo) {}
}
class C {
use T;
public function test(DOMDocument $dom) {}
}
我認爲這是一類使用特性,保證這個類有一個具體的事實界面可用。但在這裏,如果我們無意中爲了另一個目的而忽略特質方法,我們甚至沒有像經典繼承那樣收到嚴格標準通知。
這是特意允許的嗎?做什麼的?
謝謝您的回答,它確實說的類可以覆蓋特徵的方法,但並沒有說爲什麼可以用不同的簽名重寫它! – Benjamin 2012-07-17 16:16:28
我更新了我的帖子。 – Eugene 2012-07-18 14:55:08
據我所知,PHP中的特徵覆蓋方法與繼承的方式相同,即沒有簽名檢查,只有方法名稱。 – Timur 2012-07-18 15:00:59