Maison > développement back-end > tutoriel php > Analyser les principes et l'utilisation du mécanisme Trait en PHP

Analyser les principes et l'utilisation du mécanisme Trait en PHP

青灯夜游
Libérer: 2023-04-08 14:44:01
avant
3024 Les gens l'ont consulté

Cet article analysera les principes et l'utilisation du mécanisme Trait en PHP. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il sera utile à tout le monde.

Analyser les principes et l'utilisation du mécanisme Trait en PHP

Introduction au trait :

1 Depuis PHP5.4, PHP a implémenté une méthode de réutilisation de code appelée trait.

2. Trait est un mécanisme de réutilisation de code préparé pour les langages à héritage unique​​2 comme PHP.

3. Afin de réduire les restrictions du langage d'héritage unique, Trait permet aux développeurs de réutiliser librement des méthodes dans des classes indépendantes dans différentes hiérarchies.

4. Trait réalise la réutilisation du code et brise la limitation de l'héritage unique

5. Trait est une classe, mais il ne peut pas être instancié.

6. Lorsque les méthodes de la classe ont le même nom, la priorité est la classe actuelle>trait>classe parent ;

7. Lorsque les méthodes de plusieurs classes de traits ont le même nom. , vous devez spécifier l'accès qui, alias d'autres méthodes.

Exemple :

trait Demo1{
 public function hello1(){
  return __METHOD__;
 }
}
trait Demo2{
 public function hello2(){
  return __METHOD__;
 }
}
class Demo{
 use Demo1,Demo2;//继承Demo1和Demo2
 public function hello(){
  return __METHOD__;
 }
 public function test1(){
  //调用Demo1的方法
  return $this->hello1();
 }
 public function test2(){
  //调用Demo2的方法
  return $this->hello2();
 }
}
$cls = new Demo();
echo $cls->hello();
echo "<br>";
echo $cls->test1();
echo "<br>";
echo $cls->test2();
Copier après la connexion

Résultat d'exécution :

Demo::hello
Demo1::hello1
Demo2::hello2
Copier après la connexion

Méthodes de traits multiples portant le même nom :

trait Demo1{
 public function test(){
  return __METHOD__;
 }
}
trait Demo2{
 public function test(){
  return __METHOD__;
 }
}
class Demo{
 use Demo1,Demo2{
  //Demo1的hello替换Demo2的hello方法
  Demo1::test insteadof Demo2;
  //Demo2的hello起别名
  Demo2::test as Demo2test;
 }
 public function test1(){
  //调用Demo1的方法
  return $this->test();
 }
 public function test2(){
  //调用Demo2的方法
  return $this->Demo2test();
 }
}
$cls = new Demo();
echo $cls->test1();
echo "<br>";
echo $cls->test2();
Copier après la connexion

Résultat de l'exécution :

Demo1::test
Demo2::test
Copier après la connexion

Pour plus de connaissances connexes, veuillez faire attention au Site Web chinois PHP ! !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:csdn.net
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal