Heim >Backend-Entwicklung >PHP-Problem >Welche Funktionen haben PHP-Traits?

Welche Funktionen haben PHP-Traits?

coldplay.xixi
coldplay.xixiOriginal
2020-07-01 14:25:043892Durchsuche

Die Funktion von PHP-Merkmalen ist für einzelne Vererbungssprachen wie PHP konzipiert. Sie soll es Entwicklern ermöglichen, eine Reihe von Methoden problemlos zwischen mehreren Klassen in verschiedenen Vererbungssystemen zu teilen, um die verursachten Probleme zu reduzieren durch Einzelvererbung.

Welche Funktionen haben PHP-Traits?

Traits ist für Sprachen mit einfacher Vererbung wie PHP konzipiert. Es soll Entwicklern die einfache gemeinsame Nutzung einer Reihe von Methoden zwischen mehreren Klassen in verschiedenen Vererbungssystemen ermöglichen, um die durch die Einzelvererbung verursachten Einschränkungen zu verringern. Die Kombination von Merkmalen und Klassen vermeidet eine Reihe von Problemen, die durch Mehrfachvererbung verursacht werden.

Verwendung von

Schauen Sie sich zunächst das Beispiel im offiziellen Dokument an:

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

Wie aus dem obigen Beispiel ersichtlich ist, enthält der Funktionssatz ezcReflectionReturnInfo zwei Methoden: getReturnType und getReturnDescription, während die folgenden zwei Unterklassen von verschiedenen übergeordneten Klassen erben, diese beiden Methoden jedoch über use ezcReflectionReturnInfo wiederverwenden können. Einfach und bequem.

Verwandte Lernempfehlungen: PHP-Programmierung vom Einstieg bis zur Beherrschung

Notizen

  • Wenn es Methoden mit demselben Namen in den Merkmalen der Unterklasse, der übergeordneten Klasse und der Verwendung gibt, ist die Priorität dieser drei Methoden: Unterklasse>

    Sie können mehrere Merkmale gleichzeitig verwenden, aber Sie können keine Merkmale mit demselben Namen verwenden
  • Wenn bei mehreren verwendeten Merkmalen ein Methodennamenkonflikt auftritt, können Sie verwenden um eine Methode aus einem bestimmten A-Merkmal anzugeben. Zum Beispiel: Die Methode
  • <?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;
        }
    }

kann as zum Festlegen eines Alias ​​verwenden, ist jedoch nur in dieser Klasse gültig.
  • class Aliased_Talker {
        use A, B {
            B::smallTalk insteadof A;
            A::bigTalk insteadof B;
            B::bigTalk as talk;
        }
    }

Bei Verwendung von as können Sie auch die Sichtbarkeit der Methode ändern.
  • class MyClass2 {
        use HelloWorld { sayHello as private myPrivateHello; }
    }

Merkmale können verschachtelt sein, zum Beispiel kann A B verwenden.
  • <?php
    trait Hello {
        public function sayHello() {
            echo &#39;Hello &#39;;
        }
    }
    trait World {
        public function sayWorld() {
            echo &#39;World!&#39;;
        }
    }
    trait HelloWorld {
        use Hello, World;
    }

Merkmale können abstrakte Methoden definieren. Ebenso muss die Klasse, die die Merkmale verwendet, diese abstrakten Methoden implementieren
    Traits können reguläre Variablen, statische Variablen und Methoden definieren

Das obige ist der detaillierte Inhalt vonWelche Funktionen haben PHP-Traits?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn