Ответ 1
Это поведение документировано. От php.net(http://php.net/manual/en/language.oop5.traits.php):
Унаследованный элемент из базового класса переопределяется членом вставленном по значению. Порядок приоритета состоит в том, что члены из текущий класс переопределяет методы Trait, которые в свою очередь переопределяют унаследованные методы.
Нет причин для уведомлений.
Edit:
Я взглянул на более серьезную литературу, чтобы пролить свет на эту тему:). Похоже, такое поведение является частью определения признаков. Они хотят работать таким образом. Это из исследования "Черты: составные единицы поведения" (Труды Европейской конференции по объектно-ориентированному программированию):
Еще одно свойство композиции признаков состоит в том, что порядок композиции нерелевантные и, следовательно, интерпретирующие методы должны быть явно неоднозначно (см. раздел 3.5). Конфликты между методами, определенными в классы и методы, определяемые включенными признаками, разрешаются с использованием следующие два правила приоритета.
- Методы класса имеют приоритет над методами признаков.
- Методы атрибутов имеют приоритет над методами суперкласса. Это следует из свойства fl attening, в котором говорится, что методы признаков ведут себя так, как если бы они были определены в самом классе.
Вы можете прочитать больше здесь: http://scg.unibe.ch/archive/papers/Scha03aTraits.pdf