Traits en PHP

arrow_back Blog

Php

Desde la versión 5.4.0, PHP implementa una metodología de reutilización de código llamada Traits.

Los Traits en PHP son una poderosa característica que nos permite hacer algo que de otra forma no sería posible, simular herencia múltiple. PHP es un lenguaje de programación que sólo soporta herencia simple, si necesitamos utilizar múltiples clases en una clase, la única forma que tenemos a nuestra disposición es a través de los Traits.

Sintaxis de un Trait

La sintaxis para crear un Trait es diferente a la sintaxis que utilizamos para crear las clases, el motivo es que debemos hacer uso de la palabra reservada Trait en lugar de class.

El código anterior define el Trait Downloadable, el cual sugiere que será algo que permitirá realizar descargas.

Añadir lógica a un Trait

Para añadir lógica a un Trait y que de esta forma su existencia tenga sentido sólo debemos escribir métodos de la misma forma que si estuviéramos trabajando con una clase.

Ya tenemos un Trait con un método, ahora necesitamos saber cómo podemos utilizar este Trait en nuestro proyecto, ya que un Trait no es instanciable.

Ejemplo de uso de Traits

Para hacer uso de Traits en PHP sólo debemos utilizar la palabra reservada use seguida del nombre del Trait.

Si revisas el código anterior, verás que en el método downloadPhoto estamos llamando a un método download que no existe en nuestro controlador, bueno, no existe si sólo leemos el contenido de nuestra clase, pero sí existe en el Trait.

La magia de los Traits es que una vez los utilizamos en una clase, todos sus métodos y propiedades, sean del ámbito que sean, pertenecen a su clase y pueden ser utilizados.

Uso de múltiples Traits

Lo realmente bueno de los Traits en PHP es que no tenemos límite, podemos utilizar todos los que necesitemos, y su sintaxis es muy sencilla. A continuación, te adjunto un modelo User de Laravel para que veas cómo utilizar múltiples Traits.

Como puedes ver, sólo debemos separar cada Trait con una coma y toda la lógica de cada uno de ellos pasará a formar parte de la clase que los utilice.

Conflictos entre métodos de Traits

Algo muy común en el uso de Traits es el conflicto que puede haber en los nombres de sus métodos. Te pongo un ejemplo de dos Traits que permiten descargar algo, Video y Photo.

Si queremos utilizar ambos Traits en la misma clase, tendremos un conflicto, ya que no podemos tener dos métodos que se llamen igual en una clase. Por suerte, podemos solucionar este pequeño inconveniente de forma rápida y sencilla de la siguiente forma.

Ahora tenemos dos métodos download, pero uno de ellos con un alias, que es _downloadPhoto.

Uso de constantes en Traits a partir de PHP 8.2

PHP 8.2 nos permite hacer uso de constantes en Traits, algo que antes no era posible.

Laravel hace uso intenso de Traits

Laravel Framework desde mi punto de vista es realmente el impulsor de los Traits en PHP, quizá parece algo exagerado, pero los desarrolladores Laravel nos hemos familiarizado con los Traits en mayor parte gracias al uso intenso de ellos en Laravel.

Conclusiones

Como has podido ver, los Traits en PHP son una poderosa herramienta que no debemos obviar. Si deseas seguir aprendiendo más temas sobre PHP, no te pierdas nuestro curso gratuito de PHP 8.

Cursosdesarrolloweb Cursosdesarrolloweb

Cursosdesarrolloweb es una plataforma educativa con cursos y tutoriales en texto y vídeo.

Términos y condiciones Política de privacidad Formulario de contacto

Copyright 2024 © Todos los derechos reservados.

Contacto