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