Les traits en PHP

PHP ne supporte que l’héritage simple, c’est à dire, une classe fille ne peut hériter que d’une seul classe mère. Donc, que faire si une classe a besoin d’hériter de plusieurs classes mères ? Les traits résolvent ce problème.

Les traits sont utilisés pour déclarer les méthodes qui peuvent être utilisées dans plusieurs classes. Les traits peuvent avoir des méthodes et des méthodes abstraites qui peuvent être utilisées dans plusieurs classes, et les méthodes peuvent avoir n’importe quel modificateur d’accès (public, private, or protected).
 
 
Les traits sont déclarés avec le mot-clé trait :

<?php
	trait myTrait {
	  // code...
	}
?>

Pour utiliser un trait dans une classe, utilisez le mot-clé use :

<?php
	class myClass {
	  use myTrait;
	}
?>

Regardons un exemple :

<?php
	trait school {
		public function learn() {
			echo "I am learning PHP at WayToLearnX!";
		}
	}

	class Person {
	  use school;
	}

	$person = new Person();
	$person->learn();
?>

La sortie :

I am learning PHP at WayToLearnX!

Ici, nous déclarons un trait appelé « school ». Ensuite, nous créons une classe appelée « Person ». La classe utilise le trait, et toutes les méthodes du trait seront disponibles dans la classe.

Si d’autres classes ont besoin d’utiliser la fonction learn(), utilisez simplement le trait « school » dans ces classes. Cela réduit la duplication du code, car il n’est pas nécessaire de redéclarer la même méthode encore et encore.
 
 

Utiliser plusieurs traits en PHP
<?php
	trait school {
		public function learn() {
			echo "I am learning PHP at WayToLearnX! \n";
		}
	}

	trait company {
		public function work() {
			echo "I am working with PHP at WayToLearnX!";
		}
	}
	
	class Person {
	  use school, company;
	}

	$person = new Person();
	$person->learn();
	$person->work();
?>

La sortie :

I am learning PHP at WayToLearnX! 
I am working with PHP at WayToLearnX!

Ici, nous avons déclaré deux traits appelés school et company. Ensuite, nous avons crée une classe appelée « Person ». La classe utilise les deux traits school et company qui sont séparés par une virgule.
 
 

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *