Ưu tiên phương thức khi làm việc với trait trong OOP PHP
Nếu trong lớp và trong trait có phương thức trùng tên, thì phương thức của lớp sẽ ghi đè lên phương thức của trait:
<?php
trait TestTrait
{
// Phương thức có tên method:
public function method()
{
return 'trait';
}
}
class TestClass
{
use TestTrait;
// Phương thức giống tên method:
public function method()
{
return 'test';
}
}
$test = new TestClass;
echo $test->method(); // sẽ hiển thị 'test' - phương thức của chính lớp đã hoạt động
?>
Nếu bản thân lớp không có phương thức như vậy, nhưng có xung đột tên giữa phương thức của trait và phương thức của lớp cha, thì các phương thức của trait sẽ có ưu tiên:
<?php
trait TestTrait
{
// Phương thức có tên method:
public function method()
{
return 'trait';
}
}
// Lớp cha:
class ParentClass
{
// Phương thức có tên method:
public function method()
{
return 'parent';
}
}
// Lớp kế thừa phương thức method từ lớp cha:
class TestClass extends ParentClass
{
use TestTrait;
}
$test = new TestClass;
echo $test->method(); // sẽ hiển thị 'trait', vì trait có ưu tiên
?>