Prioritas Metode saat Bekerja dengan Traits dalam OOP PHP
Jika dalam kelas dan dalam trait terdapat metode dengan nama yang sama, maka metode kelas akan menggantikan metode trait:
<?php
trait TestTrait
{
// Metode dengan nama method:
public function method()
{
return 'trait';
}
}
class TestClass
{
use TestTrait;
// Metode yang sama dengan nama method:
public function method()
{
return 'test';
}
}
$test = new TestClass;
echo $test->method(); // akan menampilkan 'test' - metode kelas sendiri yang berjalan
?>
Jika kelas itu sendiri tidak memiliki metode seperti itu, tetapi terdapat konflik nama antara metode trait dan metode kelas induk, maka metode trait memiliki prioritas:
<?php
trait TestTrait
{
// Metode dengan nama method:
public function method()
{
return 'trait';
}
}
// Kelas induk:
class ParentClass
{
// Metode dengan nama method:
public function method()
{
return 'parent';
}
}
// Kelas mewarisi metode method dari induk:
class TestClass extends ParentClass
{
use TestTrait;
}
$test = new TestClass;
echo $test->method(); // akan menampilkan 'trait', karena trait memiliki prioritas
?>