Heim  >  Artikel  >  Backend-Entwicklung  >  Was ist ein Merkmal? Teilen Sie die Deklaration und Verwendungstipps von Trait in PHP

Was ist ein Merkmal? Teilen Sie die Deklaration und Verwendungstipps von Trait in PHP

伊谢尔伦
伊谢尔伦Original
2017-05-17 14:14:291824Durchsuche

Was ist eine Eigenschaft?

php unterstützt Trait-Funktionen seit Version 5.4. Es ist der Class-Klasse sehr ähnlich und alle gängigen Trait-Funktionen in der Klasse können implementiert werden. Merkmale werden nicht zum Ersetzen von Klassen verwendet, sondern zum „Einmischen“ in Klassen. Merkmale sollen die Einschränkungen von Sprachen mit einfacher Vererbung verringern und Entwicklern die freie Wiederverwendung von Methodensätzen in unabhängigen Klassen innerhalb verschiedener Hierarchien ermöglichen. Die Semantik von Merkmalen und Klassenzusammensetzung definiert eine Möglichkeit, die Komplexität zu reduzieren und die typischen Probleme zu vermeiden, die mit der traditionellen Mehrfachvererbung verbunden sind. Beispielsweise müssen zwei abstrakte Klassen gleichzeitig geerbt werden. Dies ist eine Funktion, die die PHP-Sprache nicht unterstützt, um dieses Problem zu lösen. Oder es kann verstanden werden, dass die Vererbungsklassenkette die Unterklasse davon abhält, bestimmte Merkmale der übergeordneten Klasse zu erben. Dies entspricht der Verwendung der Merkmale der übergeordneten Klasse. Wenn ein Merkmal vorhanden ist, werden die Mitglieder des Merkmals zuerst aufgerufen .

Merkmalsdeklaration

Um eine Klasse zu deklarieren, müssen Sie natürlich das Schlüsselwort class verwenden Verwenden Sie auch das Schlüsselwort trait. Die Eigenschaften einer Klasse sind allgemein verfügbar. Trait unterstützt Modifikatoren wie final, static und abstract , daher unterstützt Trait auch die Verwendung abstrakter Methoden, Klassendefinitionen statischer Methoden und natürlich können auch Attribute definiert werden. Trait kann jedoch nicht wie eine Klasse mit new instanziiert werden, da Trait in einer Klasse verwendet wird und nicht alleine verwendet werden kann. Wenn wir Interface und Trait vergleichen, ist Trait praktischer.

Der einfache Trait-Deklarationscode lautet wie folgt:

<?php
//使用 trait 关键字申明一个 Trait,需要php5.4以上的版本
trait dome{
 public $a = true;        //声明成员属性
 static $b = 1;           //使用 static 关键字声明静态变量
 function method1(){
 }      //声明成员方法
 abstract public function method2(); //加入抽象修饰符,说明调用类必须实现它
}
?>


Grundlegende Verwendung von Trait

Anders als Klassen können Traits keine Objekte selbst instanziieren und müssen zur Verwendung in Klassen gemischt werden. Dies entspricht dem Kopieren der Mitglieder in Trait in die Klasse und der Verwendung der Klasse genauso wie der Verwendung ihrer eigenen Mitglieder. Wenn Sie Trait in einer Klasse verwenden möchten. Merkmale müssen über das Schlüsselwort use in die Klasse eingefügt werden.

Der Code lautet wie folgt:

<?php
//使用 trait 关键字申明一个 Trait,有两个成员方法
trait dome{
 function method1(){
 }      //声明成员方法
 function method2(){
 }      //声明成员方法
}
class dome1{    //申明一个类,类中混入 Trait
 use dome;    //使用 use 关键字在类中使用 dome
}
$obj = new dome1();   //实例化 dome1 对象
$obj->method1();      // 通过 dome1 对象,直接调用混入类 dome1 的成员方法 method1
$obj->method2();      // 通过 dome1 对象,直接调用混入类 dome1 的成员方法 method2
?>

Im obigen Beispiel wird das Schlüsselwort use verwendet, um die Mitglieder in dome in die Klasse dome1 zu mischen. Sie können auch mehrere Merkmale gleichzeitig mischen und über das Schlüsselwort „use“ gemeinsam verwenden. Durch Kommastrennung können mehrere Traits in der use-Anweisung aufgelistet und alle in eine Klasse eingefügt werden. Es ist zu beachten, dass es zwangsläufig zu Konflikten kommt, wenn mehrere Traits gleichzeitig verwendet werden. PHP5.4 bringt vom Syntaxaspekt her die verwandte Schlüsselwortsyntax anstelle von .

Der Beispielcode lautet wie folgt:

<?php
//使用 trait 关键字申明一个 Trait,有两个成员方法
trait dome1
{
 function fun()
 {
     echo "第一个 Trait 中的 fun 方法";
 }
}
trait dome2   //这里名称相同就会有冲突
{
 function fun()
 {
    echo "第二个 Trait 中的 fun 方法";
 }
}
class dome{
 use dome1,dome2{     // dome2 中申明
   dome1::fun insteadof dome2;  // 申明使用 dome1 中的 fun 替换
 }
}
$obj = new dome();
$obj->fun();       //  输出第一个 Trait 中的 fun 方法
?>

Sie können nicht nur das Schlüsselwort „use“ in einer Klasse verwenden, um Mitglieder in Trait in die Klasse einzumischen, sondern auch Verwenden Sie es auch in Trait. Verwenden Sie das Schlüsselwort use, um Mitglieder aus einem anderen Trait einzumischen. Dies bildet eine Verschachtelung zwischen Merkmalen. Um Anforderungen an die verwendeten Klassen durchzusetzen, unterstützen Traits die Verwendung abstrakter Methoden. Wenn Sie eine abstrakte Methode deklarieren, die in Trait implementiert werden muss, muss die Klasse, die sie verwendet, sie zuerst implementieren, genau wie beim Erben einer abstrakten Klasse, und die abstrakte Methode in der Klasse implementieren.

Eine detailliertere Verwendung finden Sie im offiziellen Handbuch. Wenn Sie jedoch zum ersten Mal mit dem Erlernen von Trait beginnen, sollten Sie die folgenden wichtigen Punkte verstehen:

1. Trait überschreibt die übergeordnete Klassenmethode der aufrufenden Klasse.

2. Von der Basisklasse geerbte Mitglieder werden durch von Trait eingefügte Mitglieder überschrieben. Die Rangfolge ist: Mitglieder der aktuellen Klasse überschreiben Trait-Methoden und Traits überschreiben geerbte Methoden.

3. Trait kann new nicht verwenden, um Objekte wie eine Klasse zu instanziieren.

4. Ein einzelnes Merkmal kann aus mehreren Merkmalen bestehen.

5. Verwenden Sie in einer einzelnen Klasse die Einführung von Traits. Sie können mehrere Traits einführen.

6. Trait unterstützt Modifikatoren wie final, static und abstract.

7. Sie können stattdessen und als Operatoren verwenden, um Konflikte zwischen Merkmalen zu lösen.

8. Die Verwendung der as-Syntax kann auch zum Anpassen der Zugriffskontrolle von Methoden verwendet werden.


【Verwandte Tutorial-Empfehlungen】

1. "php.cn Dugu Jiujian (4) - PHP-Video-Tutorial

2. Video-Tutorial: Deklarations- und Verwendungsfähigkeiten von Merkmalsmerkmalen: Sammlung von Klassenmethoden zur Erzielung der Code-Wiederverwendung

3 >Praktisches PHP-Video-Tutorial

Das obige ist der detaillierte Inhalt vonWas ist ein Merkmal? Teilen Sie die Deklaration und Verwendungstipps von Trait in PHP. 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