我不知道是否有任何好的理由,为什么这种行为可能在当前的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