Что делать, если у двух трейтов метод с одинаковым именем?

Ответ
trait A {
    public function hello(): string { return 'A'; }
}

trait B {
    public function hello(): string { return 'B'; }
}

class MyClass {
    use A, B {
        A::hello insteadof B;  // использовать метод из A
        B::hello as helloB;     // метод B доступен как helloB
    }
}

$obj = new MyClass();
echo $obj->hello();   // "A"
echo $obj->helloB();  // "B"

Без разрешения конфликта PHP выдаст фатальную ошибку. as также позволяет менять видимость: A::hello as private;

🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.