Keutamaan Kaedah Semasa Bekerja dengan Traits dalam OOP PHP
Jika dalam kelas dan dalam trait terdapat kaedah yang sama namanya, maka kaedah kelas akan menggantikan kaedah trait:
<?php
trait TestTrait
{
// Kaedah dengan nama method:
public function method()
{
return 'trait';
}
}
class TestClass
{
use TestTrait;
// Kaedah yang sama dengan nama method:
public function method()
{
return 'test';
}
}
$test = new TestClass;
echo $test->method(); // akan memaparkan 'test' - kaedah kelas itu sendiri yang berfungsi
?>
Jika kelas itu sendiri tidak mempunyai kaedah sedemikian, tetapi terdapat konflik nama antara kaedah trait dan kaedah kelas induk, maka kaedah trait mempunyai keutamaan:
<?php
trait TestTrait
{
// Kaedah dengan nama method:
public function method()
{
return 'trait';
}
}
// Kelas induk:
class ParentClass
{
// Kaedah dengan nama method:
public function method()
{
return 'parent';
}
}
// Kelas mewarisi kaedah method dari induk:
class TestClass extends ParentClass
{
use TestTrait;
}
$test = new TestClass;
echo $test->method(); // akan memaparkan 'trait', kerana trait mempunyai keutamaan
?>