У меня есть класс, который реализует интерфейс для метода execute
.
Интерфейс заставляет метод execute
иметь два аргумента с некоторыми подсказками типа.
Также я использую трейт с методом execute
, но с другой функциональностью и сигнатурой. Я изменяю имя метода типажей, используя:
class MyClass implements MyInterface {
use MyTrait
{
execute as protected commanderExecute;
}
public function execute(SomeInterface $arg1, SomeInterface2 $arg2)
{
// do something
}
}
Когда я пытаюсь запустить приложение, оно выдает исключение Fatal error со следующим сообщением:
Метод трейта commandExecute не применялся, потому что есть коллизии с другими методами трейта на ...
trait MyTrait {public function execute(){}} interface MyInterface{} class MyClass implements MyInterface {use MyTrait{execute as protected commanderExecute;}public function execute(){}}
в оболочку PHP не вызывает ошибки. - person Mark Amery   schedule 15.02.2015