Diferencia entre revisiones de «Traits»

De Wiki Proyectos Beta
Ir a la navegación Ir a la búsqueda
 
(No se muestran 6 ediciones intermedias del mismo usuario)
Línea 1: Línea 1:
= General =
= 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: [https://www.php.net/manual/es/language.oop5.traits.php ES]
Documentación oficial de traits: [https://www.php.net/manual/es/language.oop5.traits.php ES]
Línea 5: Línea 11:
Documentación oficial de traits: [https://www.php.net/manual/en/language.oop5.traits.php EN]
Documentación oficial de traits: [https://www.php.net/manual/en/language.oop5.traits.php EN]


= Ejemplo =
= Sintaxis =
 
<?php
  trait TraitName {
    // Algo de code...
  }
 
Para utilizar el trait en una clase, se utiliza la palabra reservada '''use'''
 
<?php
  class MyClass {
    use TraitName;
  }
 
= Ejemplos =
 
== Ejemplo 1 ==
 
Un solo trait se usa.


  <?php
  <?php
   trait message1 {
   trait message {
     public function msg1() {
     public function print() {
       echo "OOP is fun! ";
       echo "Proyectos Beta is fun!!!";
     }
     }
   }
   }
   
   
   class Welcome {
   class Welcome {
     use message1;
     use message;
   }
   }
   
   
   $obj = new Welcome();
   $object = new Welcome();
   $obj->msg1();
   $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();

Revisión actual - 06:19 22 ago 2022

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 utilizar el trait en una clase, se utiliza la palabra reservada use

<?php
  class MyClass {
    use TraitName;
  }

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();