Maison  >  Article  >  développement back-end  >  L'héritage PHP est-il simple ou multiple ?

L'héritage PHP est-il simple ou multiple ?

王林
王林original
2019-09-19 17:56:433197parcourir

L'héritage PHP est-il simple ou multiple ?

PHP ne prend pas en charge l'héritage multiple, alors comment implémenter l'héritage multiple ?

peut être implémenté à l'aide d'une interface ou d'un trait

Interface Nous n'expliquerons pas trop ici. Le principe est qu'une classe peut implémenter plusieurs interfaces. Le code suivant peut illustrer cela.

interface test1{
    public function connect();
}

interface test2{
    public function contact();
}

// 类可以同时实现多个接口
class myCode implements test1,test2{
    public function connect(){
    echo "test1!";
    }
    public function contact(){
    echo "test2!":
    }
}

Concentrons-nous sur l'implémentation des traits de l'héritage multiple (en fait, cela ne s'appelle pas l'héritage multiple, cela devrait être appelé une fonction similaire à l'héritage multiple)
Alors, qu'est-ce qu'un trait ?
Réponse : Cela ressemble à la fois à une classe et à une interface, mais ce n'est en réalité ni l'une ni l'autre. Trait peut être considéré comme une implémentation partielle d'une classe et peut être mélangé dans une ou plusieurs classes PHP existantes. pour indiquer ce que la classe peut faire ; pour fournir une implémentation modulaire. Trait est une technologie de réutilisation de code qui fournit un mécanisme flexible de réutilisation de code pour la restriction d'héritage unique de PHP.
Alors, comment implémenter le trait ? Regardez le code suivant :

//基本类
  class basicTest{
    public function test(){
      echo "hello,world\n";
    }
  }
  //traitOne
  trait traitOne{
    public function test(){
      echo "this is trait one";
    }
    public function testOne(){
      echo "one<br />";
    }
  }
  //traitTwo
  trait traitTwo{
    // public function test(){
      // echo "this is trait two!";
    // }
    public function testTwo(){
      echo "Two<br />";
    }
   }
  //继承基本类,并use trait
  class myCode extends basicTest{
    use traitOne,traitTwo;
    public function test(){
      echo "hehaha!!<br />";
    }
  }

  $obj = new myCode();
  $obj->testTwo();

Remarque :

Priorité : méthode propre>méthode trait>méthode héritée (voilà à quoi cela ressemble.)
Si nous ouvrez les commentaires dans le code ci-dessus, une erreur sera signalée car les méthodes des deux traits ont le même nom.

Tutoriel recommandé : Tutoriel vidéo 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