Traits en PHP: qué son y cómo utilizarlos
(2 min. de lectura) Los traits son un mecanismo para reutilizar código en un lenguaje que no soporta la herencia múltiple. Los traits reducen las limitaciones de la herencia simple, permitiendo a los desarrolladores reutilizar un conjunto de métodos en varias clases independientes de jerarquías. La semántica para combinar los traits y las clases es definida de tal manera que la complejidad es reducida y se evitan los problemas típicos asociados con la herencia múltiple.En otras palabras se puede decir que un trait es igual a una clase, pero con el único objetivo de agrupar funcionalidades muy específicas y de una manera coherente. No se puede instanciar directamente un trait. Es por tanto un añadido a la herencia tradicional, y habilita la composición horizontal de comportamientos; es decir, permite combinar miembros de clases sin tener que usar herencia.
Voy a poner un ejemplo sencillo para entenderlo:
trait Hola{
function saludo(){
return 'hola';
}
}
class UsarTraits {
use Hola;
function despedida(){
return 'adios';
}
}
$objTraits = new UsarTraits();
echo $objTraits->saludo();//Mostrará hola
trait Hola{
function saludo(){
return 'hola';
}
}
class UsarTraits {
use Hola;
function saludo(){
return 'hola figura';
}
}
$objTraits = new UsarTraits();
echo $objTraits->saludo();//Mostrará hola figura
Cuando dos traits han definido un método con el mismo nombre y luego se necesita utilizar ambos en la misma clase, surge un conflicto de nombres. Veámoslo con un ejemplo:
// Asumimos que los trait A y B tienen un método hello() definido
class Test {
use A, B {
B::hello insteadof A;
}
}
// La clase Test tendrá implementado el método "hello" del trait B
class Test {
use A, B {
B::hello insteadof A;
A::hello as helloA;
}
}
// La clase Test tendrá implementado el método "hello" y "helloA"