Maison  >  Article  >  développement back-end  >  Qu’est-ce qu’un trait ? Partage de la déclaration et des conseils d'utilisation de Trait en php

Qu’est-ce qu’un trait ? Partage de la déclaration et des conseils d'utilisation de Trait en php

伊谢尔伦
伊谢尔伦original
2017-05-17 14:14:291809parcourir

Qu'est-ce qu'un trait ?

php prend en charge les fonctionnalités Trait depuis la version 5.4. Elle est très similaire à la classe Class, et toutes les fonctionnalités Trait courantes de la classe peuvent être implémentées. Les traits ne sont pas utilisés pour remplacer des classes, mais pour se « mélanger » dans des classes. Les traits sont conçus pour réduire les limitations des langages à héritage unique et permettre aux développeurs de réutiliser librement des ensembles de méthodes dans des classes indépendantes au sein de différentes hiérarchies. La sémantique des traits et de la composition des classes définit un moyen de réduire la complexité et d'éviter les problèmes typiques associés à l'héritage multiple traditionnel. Par exemple, deux classes abstraites doivent être héritées en même temps, ce qui est une fonctionnalité non prise en charge par le langage PHP Trait pour résoudre ce problème. Ou on peut comprendre que la chaîne de classes d'héritage isole la sous-classe de l'héritage de certaines caractéristiques de la classe parent. Cela équivaut à lors de l'utilisation des caractéristiques de la classe parent, s'il y a un Trait, les membres du Trait seront appelés en premier. .

Déclaration de Trait

Pour déclarer une classe, vous devez utiliser le mot clé class. Pour déclarer un Trait, bien sûr, vous devez. utilisez également le mot-clé trait. Les caractéristiques d'une classe Traits sont généralement disponibles. Trait prend en charge des modificateurs tels que final, static et abstract , donc Trait prend également en charge l'utilisation de méthodes abstraites, les définitions de classe de méthodes statiques et, bien sûr, les attributs peuvent également être définis. Cependant, Trait ne peut pas être instancié en utilisant new comme une classe, car Trait est utilisé pour être mélangé dans une classe et ne peut pas être utilisé seul. Si nous comparons Interface et Trait, Trait sera plus pratique.

Le code de déclaration de trait simple est le suivant :

<?php
//使用 trait 关键字申明一个 Trait,需要php5.4以上的版本
trait dome{
 public $a = true;        //声明成员属性
 static $b = 1;           //使用 static 关键字声明静态变量
 function method1(){
 }      //声明成员方法
 abstract public function method2(); //加入抽象修饰符,说明调用类必须实现它
}
?>


Utilisation de base de Trait

Différents des classes, les Traits ne peuvent pas instancier des objets par eux-mêmes et doivent être mélangés dans des classes pour être utilisés. Cela équivaut à copier les membres de Trait dans la classe et à utiliser la classe comme si elle utilisait ses propres membres. Si vous souhaitez utiliser Trait dans une classe. Les traits doivent être mélangés dans la classe via le mot-clé use.

Le code est le suivant :

<?php
//使用 trait 关键字申明一个 Trait,有两个成员方法
trait dome{
 function method1(){
 }      //声明成员方法
 function method2(){
 }      //声明成员方法
}
class dome1{    //申明一个类,类中混入 Trait
 use dome;    //使用 use 关键字在类中使用 dome
}
$obj = new dome1();   //实例化 dome1 对象
$obj->method1();      // 通过 dome1 对象,直接调用混入类 dome1 的成员方法 method1
$obj->method2();      // 通过 dome1 对象,直接调用混入类 dome1 的成员方法 method2
?>

Dans l'exemple ci-dessus, le mot-clé use est utilisé pour mélanger les membres de dome dans la classe dome1. Vous pouvez également mélanger plusieurs traits à la fois et les utiliser ensemble via le mot-clé use. En les séparant par des virgules, plusieurs traits peuvent être répertoriés dans l'instruction use et ils peuvent tous être insérés dans une classe. Il convient de noter que des conflits surviendront inévitablement lorsque plusieurs Traits sont utilisés en même temps. PHP5.4 apporte la syntaxe des mots-clés associés au lieu de du point de vue syntaxique.

L'exemple de code est le suivant :

<?php
//使用 trait 关键字申明一个 Trait,有两个成员方法
trait dome1
{
 function fun()
 {
     echo "第一个 Trait 中的 fun 方法";
 }
}
trait dome2   //这里名称相同就会有冲突
{
 function fun()
 {
    echo "第二个 Trait 中的 fun 方法";
 }
}
class dome{
 use dome1,dome2{     // dome2 中申明
   dome1::fun insteadof dome2;  // 申明使用 dome1 中的 fun 替换
 }
}
$obj = new dome();
$obj->fun();       //  输出第一个 Trait 中的 fun 方法
?>

Non seulement vous pouvez utiliser le mot-clé use dans une classe pour mélanger des membres de Trait dans la classe, mais vous pouvez utilisez-le également dans Trait. Utilisez le mot-clé use pour mélanger des membres d'un autre Trait. Cela forme une imbrication entre les traits. Afin d'imposer des exigences aux classes utilisées, Traits prend en charge l'utilisation de méthodes abstraites. Si vous déclarez une méthode abstraite qui doit être implémentée dans Trait, la classe qui l'utilise doit d'abord l'implémenter, tout comme hériter d'une classe abstraite et doit implémenter la méthode abstraite dans la classe.

Pour une utilisation plus détaillée, veuillez vous référer au manuel officiel. Mais lorsque vous commencez à apprendre Trait, vous devez comprendre les points clés suivants :

1. Trait remplacera la méthode de classe parent de la classe appelante.

2. Les membres hérités de la classe de base sont remplacés par les membres insérés par Trait. L'ordre de priorité est le suivant : les membres de la classe actuelle remplacent les méthodes Trait et les Traits remplacent les méthodes héritées.

3. Trait ne peut pas utiliser new pour instancier des objets comme une classe.

4. Un seul Trait peut être composé de plusieurs Traits.

5. Dans une seule classe, utilisez use pour introduire un trait. Vous pouvez introduire plusieurs traits.

6. Trait prend en charge les modificateurs, tels que final, statique et abstrait.

7. Vous pouvez utiliser à la place et comme opérateurs pour résoudre les conflits entre les traits.

8. L'utilisation de la syntaxe as peut également être utilisée pour ajuster le contrôle d'accès des méthodes.


【Recommandations de tutoriel associées】

1 "php.cn Dugu Jiujian (4) - Tutoriel vidéo php.

2. Tutoriel vidéo : Compétences de déclaration et d'utilisation des caractéristiques des traits : Collection de méthodes de classe pour réaliser la réutilisation du code

3. >Tutoriel vidéo pratique 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:
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