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

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

青灯夜游
青灯夜游avant
2020-04-23 09:19:362920parcourir

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

Résultat d'exécution :

Demo::hello
Demo1::hello1
Demo2::hello2

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

Résultat de l'exécution :

Demo1::test
Demo2::test

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer