Prioridad de métodos al trabajar con traits en POO en PHP
Si una clase y un trait tienen un método homónimo, el método de la clase anulará el método del trait:
<?php
trait TestTrait
{
// Método con nombre method:
public function method()
{
return 'trait';
}
}
class TestClass
{
use TestTrait;
// El mismo método con nombre method:
public function method()
{
return 'test';
}
}
$test = new TestClass;
echo $test->method(); // mostrará 'test' - se ejecutó el método de la clase misma
?>
Si la clase misma no tiene tal método, pero hay un conflicto de nombres entre los métodos del trait y los métodos de la clase padre, entonces los métodos del trait tienen prioridad:
<?php
trait TestTrait
{
// Método con nombre method:
public function method()
{
return 'trait';
}
}
// Clase padre:
class ParentClass
{
// Método con nombre method:
public function method()
{
return 'parent';
}
}
// La clase hereda el método method del padre:
class TestClass extends ParentClass
{
use TestTrait;
}
$test = new TestClass;
echo $test->method(); // mostrará 'trait', porque el trait tiene prioridad
?>