Elementos, funciones, objeto en PHP
/

Los Traits en la Programación Orientada a Objetos en PHP

Esta estructura es un tipo de clase que une a una serie de métodos o atributos que pueden ser utilizados en otras clases, pero sin que exista el concepto de legado o herencia. Visto de otra forma es una manera sencilla de compartir código dentro del lenguaje PHP. Por otro lado, este lenguaje se caracteriza por no permitir el legado múltiple.

Sintaxis para definir un trait


trait nombre_trait {
//definición de atributos o de métodos
   [...]
}

Los atributos y métodos se definen como en una clase cualquiera. Para su uso bastará con definir una nueva clase que haga uso de uno o varios traits mediante la implementación de la palabra reservada ‘use’.

Ejemplo

definición de un trait que contiene métodos de cálculo


<?php
trait YoSeCalcular {
   function suma ($a,$b) {
      return $a+$b;
   }
   function producto ($a,$b) { 
      return $a*$b; 
   }
}?>

Definición de un trait que contiene un método que muestra un mensaje


<?php
trait YoSoyListo {
//El método prueba si existe un atributo 'nombre' en la clase y si es el caso lo utiliza en el mensaje
   function decirHola () {
      if (isset ($this->nombre)){
         echo "¡Hola {$this->nombre}!<br>";
      }else{
         echo '¡Hola!<br>';
      }
   }
}?>

Definición de una clase que usa los dos traits


<?php
class usuario {
   use YoSeCalcular, YoSoyListo;
//Atributos y métodos de la clase.
   private $nombre; //nombre del usuario
   public function __construct ($nombre) {
//inicializar el nombre con el valor pasado como parámetro
      $this->nombre=$nombre;
//Decir hola (llamada de un método de uno de los traits)
      $this->decirHola();
   }
}?>

Uso de la clase con la instanciación de un nuevo objeto


<?php
   $yo = new usuario ('Ramon');
//Hacer un cálculo (llamada a un método de uno de los traits)
   echo 'Yo sé Calcular: ';
   echo '10821 x 11409 = ', $yo->producto (10821,11409);
?>

ejecutar código

Deja una respuesta