Traits

De Wiki Proyectos Beta
Ir a la navegación Ir a la búsqueda

General

PHP solo admite herencia simple. Una clase secundaria solo puede heredar de un solo padre.

¿Qué pasa si una clase necesita heredar múltiples comportamientos? Los traits de la Programación Orientada a Objetos resuelven este problema.

Los traits se utilizan para declarar métodos que se pueden utilizar en varias clases. Los traits pueden tener métodos y métodos abstractos que se pueden usar en varias clases, y los métodos pueden tener cualquier modificador de acceso (público, privado o protegido).

Documentación oficial de traits: ES

Documentación oficial de traits: EN

Sintaxis

<?php
  trait TraitName {
    // Algo de code...
  }

Para utlizar el trait en una clase, se utiliza la palabra reservada use

Ejemplos

Ejemplo 1

Un solo trait se usa.

<?php
  trait message {
    public function print() {
      echo "Proyectos Beta is fun!!!";
    }
  }

  class Welcome {
    use message;
  }

  $object = new Welcome();
  $object->print();

Ejemplo 2

Se utiliza múltiples traits.

<?php
 trait message1 {
   public function msg1() {
     echo "Proyectos Beta is fun!!!";
   }
 }

 trait message2 {
   public function msg2() {
     echo "Proyectos Beta is the best!";
   }
 }

 class Welcome {
   use message1;
 }

 class Welcome2 {
   use message1, message2;
 }

 $object = new Welcome();
 $object->msg1();
 echo "\n\n";

 $object2 = new Welcome2();
 $object2->msg1();
 $object2->msg2();