Maison  >  Article  >  développement back-end  >  Introduction à la syntaxe des traits pour implémenter l'héritage multiple en PHP (exemple de code)

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

不言
不言avant
2019-03-11 15:04:322155parcourir

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

Résultat d'exécution :

This is trait two 
This is trait two_1

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