Sigo repasando las nuevas formas de programar que traen las últimas versiones de PHP. Así siguiendo un poco con la reutilización de código llego a los traits, que son una forma muy sencilla de tener funciones o variables en un sitio que luego puedo reutilizar fácilmente.
Desde PHP 5.4 que tenemos ésto disponible así que…
Venga, vamos con el ejemplo:
<?php trait MiLibreria1 { public function funcion1() { echo 'Funcion1 '; } public function funcion2() { echo 'Funcion2 '; } } trait MiLibreria2 { public function funcion3() { echo 'Funcion3 '; } abstract public function funcion4(); public static $variable1 = 'variable1'; } class MiTipoDeObjeto { use MiLibreria1, MiLibreria2; // debemos implementar ésta función porque es abstracta public function funcion4(){ echo 'Function4 '; } } $objeto = new MiTipoDeObjeto(); // funciones 'heredadas' $objeto->funcion1(); $objeto->funcion2(); $objeto->funcion3(); $objeto->funcion4(); // variable estática 'heredada' echo MiTipoDeObjeto::$variable1;
El código habla por sí sólo, es muy sencillo tener funciones o variables en un trait y luego usarlas dentro de una clase con la palabra reservada use. En éste caso tenemos dos librerías que se usan dentro de una clase.
También podemos hacer funciones y variables privadas, estáticas y abstractas como con las clases normales. De igual manera que las funciones abstractas de clases cuando se heredan a los objetos hijos, éstos deben implementarlas, con los traits ocurren lo mismo. De igual forma que las funciones, variables o métodos estáticos en las clases, también podemos usarlos con traits.
La principal diferencia es que podemos usar tantos traits como queramos en una clase.
Espero que haya servido. Para más información me remito a la documentación oficial:
http://php.net/manual/es/language.oop5.traits.php
Un saludo!