Maison  >  Article  >  développement back-end  >  Quelles sont les fonctions des traits php ?

Quelles sont les fonctions des traits php ?

coldplay.xixi
coldplay.xixioriginal
2020-07-01 14:25:043856parcourir

La fonction des traits php est conçue pour les langages à héritage unique tels que php. Elle est conçue pour permettre aux développeurs de partager facilement une série de méthodes entre plusieurs classes dans différents systèmes d'héritage afin de réduire les problèmes causés. par des limitations d’héritage unique.

Quelles sont les fonctions des traits php ?

Traits est conçu pour les langages à héritage unique comme php. Il est conçu pour permettre aux développeurs de partager facilement une série de méthodes entre plusieurs classes dans différents systèmes d'héritage afin de réduire les limitations causées par l'héritage unique. La combinaison de traits et de classes évite une série de problèmes causés par l’héritage multiple.

Utilisation de

Regardez d'abord l'exemple donné dans le document officiel :

<?php
trait ezcReflectionReturnInfo {
    function getReturnType() { /*1*/ }
    function getReturnDescription() { /*2*/ }
}
class ezcReflectionMethod extends ReflectionMethod {
    use ezcReflectionReturnInfo;
    /* ... */
}
class ezcReflectionFunction extends ReflectionFunction {
    use ezcReflectionReturnInfo;
    /* ... */
}
?>

Comme le montre l'exemple ci-dessus, l'ensemble de fonctionnalités ezcReflectionReturnInfo contient deux méthodes : getReturnType et getReturnDescription, tandis que les deux sous-classes suivantes héritent de classes parents différentes, mais peuvent réutiliser ces deux méthodes via use ezcReflectionReturnInfo. Simple et pratique.

Recommandations d'apprentissage associées : Programmation PHP de l'entrée à la maîtrise

Notes

  • S'il existe des méthodes portant le même nom dans les traits de la sous-classe, de la classe parent et de l'utilisation, alors la priorité de ces trois méthodes est : subclass> tratis >

    Vous pouvez utiliser plusieurs traits en même temps, mais vous ne pouvez pas utiliser des traits portant le même nom
  • S'il y a un conflit de nom de méthode dans plusieurs traits utilisés, vous pouvez utiliser ; pour spécifier une méthode à partir d'un certain trait A. Par exemple : la méthode
  • <?php
    trait A {
        public function smallTalk() {
            echo &#39;a&#39;;
        }
        public function bigTalk() {
            echo &#39;A&#39;;
        }
    }
    trait B {
        public function smallTalk() {
            echo &#39;b&#39;;
        }
        public function bigTalk() {
            echo &#39;B&#39;;
        }
    }
    class Talker {
        use A, B {
            B::smallTalk insteadof A;
            A::bigTalk insteadof B;
        }
    }

peut utiliser as pour définir l'alias, mais elle n'est valide que dans cette classe.
  • class Aliased_Talker {
        use A, B {
            B::smallTalk insteadof A;
            A::bigTalk insteadof B;
            B::bigTalk as talk;
        }
    }

Lorsque vous utilisez as, vous pouvez également modifier la visibilité de la méthode.
  • class MyClass2 {
        use HelloWorld { sayHello as private myPrivateHello; }
    }

les traits peuvent être imbriqués, par exemple, A peut utiliser B.
  • <?php
    trait Hello {
        public function sayHello() {
            echo &#39;Hello &#39;;
        }
    }
    trait World {
        public function sayWorld() {
            echo &#39;World!&#39;;
        }
    }
    trait HelloWorld {
        use Hello, World;
    }

Les traits peuvent définir des méthodes abstraites. De même, la classe qui utilise les traits doit également implémenter ces méthodes abstraites
  • Les traits peuvent définir des variables régulières, des variables statiques et des méthodes

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