PHP 5.4 :почему классы могут переопределять методы свойств с другой сигнатурой?

Мне интересно, есть ли веская причина, по которой такое поведение возможно в текущей реализации PHP 5.4:

trait T {
    public function test(PDO $pdo) {}
}

class C {
    use T;
    public function test(DOMDocument $dom) {}
}

Я думал, что тот факт, что класс использует трейт, гарантирует, что у этого класса есть определенный доступный интерфейс. Но здесь, если мы непреднамеренно переопределим метод типажа для другой цели, мы даже не получим уведомление о строгих стандартах, как в случае классического наследования.

Это специально разрешено? Зачем?

12
задан hakre 29 April 2013 в 09:24
поделиться