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.
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 unique2 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!