⊗ppOpTrInr 77 of 107 menu

Les traits en POO en PHP

Comme vous le savez déjà, en PHP, il est impossible d'hériter de plusieurs classes à la fois, seulement d'une seule. Nous avons déjà abordé une solution à ce problème : au lieu de l'héritage, utiliser les objets d'une classe à l'intérieur d'une autre.

Il existe une autre manière en PHP. Elle consiste à utiliser les traits. Un trait représente un ensemble de propriétés et de méthodes qui peuvent être inclus dans une autre classe. Ainsi, les propriétés et les méthodes du trait seront perçues par la classe comme si elles étaient les siennes.

La syntaxe d'un trait est la même que celle d'une classe, à l'exception du fait que le nom du trait doit être déclaré à l'aide du mot-clé trait.

Il est impossible de créer une instance d'un trait - les traits sont destinés uniquement à être connectés à d'autres classes. La connexion elle-même est réalisée à l'aide de la commande use, après laquelle le nom du trait à connecter est indiqué, séparé par un espace. Cette commande est écrite au début de la classe.

Voyons l'application des traits avec un exemple pratique. Supposons que nous ayons le trait Helper, contenant les propriétés privées name et age, ainsi que leurs accesseurs (getters) :

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

Supposons que nous ayons également la classe User, dans le constructeur de laquelle les propriétés name et age sont définies :

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

Ajoutons maintenant les accesseurs pour les propriétés de notre classe User. Seulement, nous n'allons pas les écrire dans la classe elle-même, mais nous allons simplement connecter le trait Helper, dans lequel ces méthodes sont déjà implémentées :

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

Après la connexion du trait, les méthodes et propriétés de ce trait apparaîtront dans notre classe. De plus, nous y accéderons comme si c'étaient les méthodes et les propriétés de la classe elle-même :

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

Implémentez la classe City avec les propriétés name, age, population et leurs accesseurs (getters). Que notre classe pour raccourcir son code utilise le trait Helper que nous avons déjà créé.

Français
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Nous utilisons des cookies pour le fonctionnement du site, l'analyse et la personnalisation. Le traitement des données est effectué conformément à la Politique de confidentialité.
accepter tout personnaliser refuser