АКЦИЯ: бесплатные месячные курсы по созданию сайтов
на выбор: верстка, JavaScript, PHP или фреймворки. Сегодня последний день для записи! Жми!
⊗ppOpTrMP 49 of 107 menu
Долгожданный Бесплатный курс по выкладке сайта на хостинг. МЫ УЖЕ НАЧАЛИ! Присоединяйтесь к нам!

Приоритет методов

Если в классе и в трейте есть одноименный метод, то метод класса переопределит метод трейта:

<?php trait TestTrait { // Метод с именем method: public function method() { return 'trait'; } } class TestClass { use TestTrait; // Такой же метод с именем method: public function method() { return 'test'; } } $test = new TestClass; echo $test->method(); // выведет 'test' - сработал метод самого класса ?>

Если же сам класс не имеет такого метода, но имеется конфликт имен методов трейта и методов родительского класса, то методы трейта имеют приоритет:

<?php trait TestTrait { // Метод с именем method: public function method() { return 'trait'; } } // Родительский класс: class ParentClass { // Метод с именем method: public function method() { return 'parent'; } } // Класс наследует метод method от родительского: class TestClass extends ParentClass { use TestTrait; } $test = new TestClass; echo $test->method(); // выведет 'trait', тк трейт имеет приоритет ?>