Prioritet metoda pri radu sa trejtovima u OOP-u u PHP-u
Ako u klasi i u trejtu postoji metod istog imena, onda će metod klase zameniti metod trejta:
<?php
trait TestTrait
{
// Metod po imenu method:
public function method()
{
return 'trait';
}
}
class TestClass
{
use TestTrait;
// Isti metod po imenu method:
public function method()
{
return 'test';
}
}
$test = new TestClass;
echo $test->method(); // ispisaće 'test' - aktivirao se metod same klase
?>
Ako sama klasa nema takav metod, ali postoji sukob imena metoda trejta i metoda roditeljske klase, onda metodi trejta imaju prioritet:
<?php
trait TestTrait
{
// Metod po imenu method:
public function method()
{
return 'trait';
}
}
// Roditeljska klasa:
class ParentClass
{
// Metod po imenu method:
public function method()
{
return 'parent';
}
}
// Klasa nasleđuje metod method od roditelja:
class TestClass extends ParentClass
{
use TestTrait;
}
$test = new TestClass;
echo $test->method(); // ispisaće 'trait', jer trejt ima prioritet
?>