Итак, в основном это код: в моей характеристике Приветствие я хочу использовать еще одну очень полезную характеристику Word.Но теперь, если класс использует Greeting, он больше не может использовать Word, хотя я использовал псевдоним.
Конечно, я могу использовать insteadof
, но для кого-то, использующего мою библиотеку, не очевидно, откуда возникла ошибкаи какие черты вовлечены.Почему здесь конфликт и есть ли уловка синтаксиса, чтобы избежать использования вместо?Спасибо.
trait Word {
public function hello()
{
return 'hello';
}
}
trait Greeting {
use Word {
Word::hello as _word_hello;
}
public function greet($name)
{
return $this->_word_hello() . " $name";
}
}
class Test {
use Word;
use Greeting;
}
PHP Fatal error: Trait method hello has not been applied, because there are collisions with other trait methods on Test in traits.php on line 20