Прыярытэт метадаў пры працы з трэйтамі ў ААП у 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', бо трэйт мае прыярытэт
?>