Приоритет метода при раду са трејтовима у ООП у 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', јер трејт има приоритет
?>