Que tema tan interesante. se que llego tarde pero es para agregar comentarios adicionales
Cita:
Iniciado por guardarmicorreo Entendiendo esto ¿quiere decir que a la hora de programar orientado a objetos los Traits son clases que no se pueden instanciar como las abstractas y que tienen código funcional para ser "use" por otras clases?
Entonces entendí los Traits al revés, creía que los Traits eran como las interfaces pero que permitían usar los métodos entre todas las clases que "use" el mismo Trait.
Por favor, que alguien me lo aclare.
Se parecen pero son conceptos completamente diferentes, lo que tienen en común es que promueven la reutilización de código:
- Las clases abstractas son interfaces para sus clases hijas y promueven la reutilización de código mediante la herencia y polimorfismo.
- Las interfaces al separar el comportamiento de la implementación promueven la reutilización mediante polimorfismo.
- Los traits refactorizan el comportamiento sacándolo de la clase, así que promueven la reutilización como unidades primitivas de funcionalidad que pueden utilizar otra clases.
Generalmente se usan las interfaces para proveer funcionalidad entre clases que no tiene una relación, pero no es para lo que se hicieron las interfaces aun que el lenguaje permite usarlas de esa forma.
Cita:
Iniciado por Italico76
A estos Traits no les veo mucho futuro...... no me convence usar herencia multiple en estos tiempos de composicion
Precisamente un objeto puede ser visto como la composición de unidades mas pequeñas de comportamiento, de tal forma que pueden ser reutilizables. Esta es la idea detrás de los traits y no implica la herencia múltiple. El detalle es que en php esto parece tener tintes de herencia múltiple por la forma en la que esta implementado y es que también pueden ser usados como mixin . Pero si los usas con el concepto que deben de tener no veo mayor problema
Cita:
Iniciado por guardarmicorreo Bueno, supongamos que los Traits solo sirven para generar code-smell :D
Y entonces ¿cómo resolver la herencia múltiple? No veo que proponga nada, simplemente criticar que se abusan de los Traits porque no se sabe programar.
Así es hasta cierto punto el articulo mas bien parece un resistencia al cambio. La realidad es que en muchos panoramas no la necesitas, Solo en caso que no tienes control para tener un intermediario que implemente las funcionalidad que necesitas y la composición no te sirve.
y si llegas a ese punto tal vez el trait se lo tuyo.