PHP-də OOP-də treytlərlə işləyərkən metodların prioriteti
Əgər sinifdə və treytdə eyniadlı metod varsa, onda sinfin metodu treytin metodunu əvəz edəcək:
<?php
trait TestTrait
{
// Method adlı metod:
public function method()
{
return 'trait';
}
}
class TestClass
{
use TestTrait;
// Eyni Method adlı metod:
public function method()
{
return 'test';
}
}
$test = new TestClass;
echo $test->method(); // 'test' çıxardacaq - sinfin öz metodu işlədi
?>
Əgər sinfin özü belə bir metoda malik deyilsə, lakin treytin metodları və valideyn sinfinin metodlarının adları arasında konflikt varsa, onda treytin metodları prioritetə malikdir:
<?php
trait TestTrait
{
// Method adlı metod:
public function method()
{
return 'trait';
}
}
// Valideyn sinfi:
class ParentClass
{
// Method adlı metod:
public function method()
{
return 'parent';
}
}
// Sinif Method metodunu valideyndən miras alır:
class TestClass extends ParentClass
{
use TestTrait;
}
$test = new TestClass;
echo $test->method(); // 'trait' çıxardacaq, çünki treyt prioritetə malikdir
?>