Мне интересно, есть ли веская причина, по которой такое поведение возможно в текущей реализации PHP 5.4:
trait T {
public function test(PDO $pdo) {}
}
class C {
use T;
public function test(DOMDocument $dom) {}
}
Я думал, что тот факт, что класс использует трейт, гарантирует, что у этого класса есть определенный доступный интерфейс. Но здесь, если мы непреднамеренно переопределим метод типажа для другой цели, мы даже не получим уведомление о строгих стандартах, как в случае классического наследования.
Это специально разрешено? Зачем?