Приоритет на методите при работа со трејтови во ООП во PHP
Ако во класа и во трејт постои метод со исто име, тогаш методот на класата ќе го замени методот на трејтот:
<?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', бидејќи трејтот има приоритет
?>