⊗ppOpTrInr 77 of 107 menu

Traits en POO en PHP

Como ya sabes, en PHP no se puede heredar de varias clases a la vez, solo de una. Anteriormente, ya hemos visto una solución a este problema: en lugar de herencia, utilizar objetos de unas clases dentro de otras.

En PHP existe otra forma. Consiste en el uso de traits. Un trait representa un conjunto de propiedades y métodos que se pueden incluir en otra clase. En este caso, las propiedades y métodos del trait serán percibidos por la clase como si fueran propios.

La sintaxis de un trait es la misma que la de una clase, excepto que el nombre del trait se debe declarar usando la palabra clave trait.

No se puede crear una instancia de un trait - los traits están destinados solo para ser conectados a otras clases. La conexión en sí se realiza con el comando use, después de la cual separado por un espacio se indica el nombre del trait a conectar. Este comando se escribe al principio de la clase.

Veamos la aplicación de los traits con un ejemplo práctico. Supongamos que tenemos este trait Helper, que contiene las propiedades privadas name y age, así como sus getters:

<?php trait Helper { private $name; private $age; public function getName() { return $this->name; } public function getAge() { return $this->age; } } ?>

Supongamos que también tenemos esta clase User, en cuyo constructor se establecen las propiedades name y age:

<?php class User { public function __construct($name, $age) { $this->name = $name; $this->age = $age; } } ?>

Ahora agreguemos los getters para las propiedades de nuestra clase User. Solo que no vamos a escribirlos en la clase misma, sino que simplemente conectaremos el trait Helper, donde estos métodos ya están implementados:

<?php class User { use Helper; // conectamos el trait public function __construct($name, $age) { $this->name = $name; $this->age = $age; } } ?>

Después de conectar el trait, en nuestra clase aparecerán los métodos y propiedades de este trait. Además, nos referiremos a ellos como si fueran métodos y propiedades de la clase misma:

<?php $user = new User('john', 30); echo $user->getName(); // mostrará 'john' echo $user->getAge(); // mostrará 30 ?>

Implemente la clase City con las propiedades name, age, population y sus getters. Que nuestra clase para acortar su código use el trait Helper que ya hemos creado.

Español
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Usamos cookies para el funcionamiento del sitio, análisis y personalización. El procesamiento de datos se realiza de acuerdo con la Política de privacidad.
aceptar todas configurar rechazar