Ver Mensaje Individual
  #9 (permalink)  
Antiguo 06/05/2014, 18:56
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 10 meses
Puntos: 379
Respuesta: Duda con funcionamiento y organización de Traits

Que tema tan interesante. se que llego tarde pero es para agregar comentarios adicionales
Cita:
Iniciado por guardarmicorreo Ver Mensaje
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 Ver Mensaje

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 Ver Mensaje
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.
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.