PHP peut-il hériter de plusieurs classes parents ?

(*-*)浩
Libérer: 2023-02-25 11:40:01
original
4734 Les gens l'ont consulté

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.

PHP peut-il hériter de plusieurs classes parents ?

Mais que devons-nous faire lorsque l'héritage multiple est utilisé dans le développement ?

Ce qui suit présente le problème de l'utilisation de traits pour implémenter l'héritage multiple en php. (Apprentissage recommandé : Tutoriel vidéo PHP)

Depuis PHP5.4, PHP a implémenté la syntaxe des traits 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 de Trait et Classe définit un moyen de réduire la complexité et d'éviter les problèmes typiques liés aux multiples traditionnels. héritage et classes Mixin.

需要注意的是,从基类继承的成员会被 trait 插入的成员所覆盖。优先顺序是来自当前类的成员覆盖了 trait 的方法,而 trait 则覆盖了被继承的方法。
Copier après la connexion

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 de l'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:php.cn
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