@maks78945

Как решить конфликты в трейтах?

Добрый день! подскажите как решить проблему в трейтах.
Вот пример
trait Trait1
{
    public function method(){
        echo 'trait1';
    }
}

trait Trait2
{
    public function method(){
        echo 'trait2';
    }
}

trait Trait3
{
    public function method(){
        echo 'trait3';
    }
}

class Test
{
    use Trait1, Trait2, Trait3{
        Trait1::method insteadof Trait2, Trait3;
        Trait2::method as traits2;
        Trait3::method as traits3;
    }

    public function test(){
        $this->method();
        $this->traits2();
        $this->traits3();
        return;
    }
}


Правильно ли я делаю что сначала даю приоритет методу traint1 по сравнению с trait2 и trait3 и после этого изменяю алиас в trait2 и trait3?
  • Вопрос задан
  • 353 просмотра
Решения вопроса 1
@BorisKorobkov Куратор тега PHP
Web developer
use Trait1, Trait2, Trait3{
Trait1::method insteadof Trait2, Trait3;
Trait2::method as traits2;
Trait3::method as traits3;
}

Синтаксис правильный
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
proudmore
@proudmore
За несколько лет опыта коммерческой разработки никогда не встречал такой ситуации. Необходимость подключения нескольких трейтов с одинаковыми названиями методов сигнализирует о серьезных проблемах с разделением ответственностей вашего кода. Если проще то вам нужно решать не проблему одинаковых названий методов, а проблему такой необходимости в принципе
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы