Конструктор столкновений PHP-trait

Извините, если это дубликат, я раньше искал ответ.

Я изо всех сил пытаюсь перегрузить метод, определенный в признаке. Это порождает фатальную ошибку:

Fatal error: Configuration has colliding constructor definitions coming from traits in Configuration.php on line 18

Их класс

 <?php namespace Theirs\Package; use Theirs\TheirTrait; class Configration { use TheirTrait; } 

Мои занятия

 <?php namespace My\Package; use Theirs\Package\Configuration as BaseConfiguration; use My\Trait\MyTrait; class Configuration extends BaseConfiguration { use MyTrait; } 

Моя черта

 use Theirs\TheirTrait as BaseSomeTrait; trait MyTrait { use BaseSomeTrait; protected function someMethod($something) { // ... } } 

Related of "Конструктор столкновений PHP-trait"

вы можете разрешить столкновение конструктора следующим образом.

 trait MyTrait { use BaseSomeTrait{ BaseSomeTrait::__construct as private __otherConstruct; } public function __construct(/* maybe params here*/) { // maybe other code $this->__otherConstruct(/* maybe params here*/); // maybe other code } } 

если у MyClass есть конструктор, вам также нужно сделать это там, или, может быть, только там, если у MyTrait нет конструктора …

Похоже, что у Theirs\TheirTrait\Configration и Theirs\Package\Configuration есть конструктор, а подписи конструктора несовместимы. (Но без кода обоих, это трудно сказать.)

Если Theirs\Package\Configuration Theirs\TheirTrait\Configration В противном случае я предполагаю, что должна быть какая-то документация о том, как использовать класс и черту в коде, чтобы они не приводили к ошибкам.