Introduction à la syntaxe des traits pour implémenter l'héritage multiple en PHP (exemple de code)

不言
Libérer: 2023-04-05 15:04:02
avant
2176 Les gens l'ont consulté

Ce que cet article vous apporte est une introduction à la syntaxe des traits (exemples de code) pour implémenter l'héritage multiple en PHP. J'espère qu'il a une certaine valeur de référence. vous aidera Vous avez aidé.

PHP n'a pas plusieurs fonctionnalités d'héritage. Même dans un langage de programmation prenant en charge l’héritage multiple, nous utilisons rarement cette fonctionnalité. De l’avis de la plupart des gens, l’héritage multiple n’est pas une bonne méthode de conception.

Mais que devons-nous faire si l'héritage multiple est utilisé dans le développement ?
Ce qui suit présente le problème de l'utilisation de "trait" pour implémenter l'héritage multiple en PHP.

Depuis PHP5.4, PHP a implémenté la syntaxe "trait" pour la réutilisation du code.

Trait est un mécanisme de réutilisation de code préparé pour le langage d'héritage unique de PHP. Afin de réduire les limites de l'héritage unique, des méthodes sont développées pour réutiliser les méthodes à différents niveaux structurels. La sémantique de la combinaison
Trait et Classe définit un moyen de réduire la complexité et d'éviter les problèmes typiques liés à l'héritage multiple traditionnel et aux classes Mixin.

Il convient de noter que les membres hérités de la classe de base seront remplacés par les membres insérés par le trait. L'ordre de priorité est que les membres de la classe actuelle remplacent les méthodes du trait et que le trait remplace les méthodes héritées.

Prenons d'abord un exemple :

trait TestOne{
    public function test()
    {
        echo "This is trait one <br/>";
    }
}
trait TestTwo{
    public function test()
    {
        echo "This is trait two <br/>";
    }
    public function testTwoDemo()
    {
        echo "This is trait two_1";
    }
}
class BasicTest{
    public function test(){
        echo "hello world\n";
    }
}
class MyCode extends BasicTest{
    //如果单纯的直接引入,两个类中出现相同的方法php会报出错
    //Trait method test has not been applied, because there are collisions with other trait 
    //methods on MyCode 
    //use TestOne,TestTwo;
    //怎么处理上面所出现的错误呢,我们只需使用insteadof关键字来解决方法的冲突
    use TestOne,TestTwo{
        TestTwo::test insteadof TestOne;
    }
}
$test = new MyCode();
$test->test();
$test->testTwoDemo();
Copier après la connexion

Résultat d'exécution :

This is trait two 
This is trait two_1
Copier après la connexion

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:
php
source:cnblogs.com
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