Heim > Artikel > Backend-Entwicklung > Beispielcode-Sharing der Traits-Funktion, die in das thinkPHP5.0-Framework eingeführt wurde
Dieser Artikel stellt hauptsächlich die Funktion Traits vor, die in das thinkPHP5.0-Framework eingeführt wurde. Er analysiert die Konzepte und Funktionen von Traits und die Verwendung der Traits-Funktion in thinkPHP5.0 in Form von Beispielen Bei Bedarf können Sie sich auf Folgendes beziehen:
Das Beispiel in diesem Artikel beschreibt die Einführung der Traits-Funktion im thinkPHP5.0-Framework. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:
ThinkPHP 5.0 begann, die Trait-Funktion (PHP5.4+) als Erweiterungsmechanismus zu verwenden, um mehrere Vererbungsprobleme in einer Klassenbibliothek einfach zu implementieren.
Traits ist ein Code-Wiederverwendungsmechanismus für Sprachen mit einfacher Vererbung wie PHP. 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 die Klassenzusammensetzung definieren eine Möglichkeit, die Komplexität zu reduzieren und die typischen Probleme zu vermeiden, die mit traditioneller Mehrfachvererbung und Mixins verbunden sind.
Da die PHP5.4-Version jedoch das automatische Laden von Merkmalen nicht unterstützt, müssen Sie bei der PHP5.4-Version die Trait-Klassenbibliothek und das System manuell importieren stellt eine Hilfsfunktion load_trait bereit, die zum automatischen Laden der Merkmalsklassenbibliothek verwendet wird. Beispielsweise kann die Merkmalsklassenbibliothek so korrekt eingeführt werden.
namespace app\index\controller; load_trait('controller/Jump'); // 引入traits\controller\Jump class index { use \traits\controller\Jump; public function index() { $this->assign('name','value'); $this->show('index'); } }
Wenn Ihre PHP-Version größer als 5.5 ist, können Sie die Funktion „load_trait“ weglassen und trait einführen.
namespace app\index\controller; class index { use \traits\controller\Jump; public function index() { } }
kann die Einführung mehrerer Merkmalsklassenbibliotheken gleichzeitig unterstützen, zum Beispiel:
namespace app\index\controller; load_trait('controller/Other'); load_trait('controller/Jump'); class index { use \traits\controller\Other; use \traits\controller\Jump; public function index() { } }
oder verwenden Sie
namespace app\index\controller; load_trait('controller/Other'); load_trait('controller/Jump'); class index { use \traits\controller\Other,\traits\controller\Jump; public function index() { } }
Das System stellt einige bereit Bibliothek für gekapselte Merkmalsklassen, die hauptsächlich für Erweiterungen von Controller und Model Class verwendet wird. Der Stamm--Namespace der integrierten Merkmalsbibliotheken dieser Systeme verwendet Merkmale anstelle von Merkmalen, um Konflikte mit Systemschlüsselwörtern zu vermeiden.
Durch Merkmale eingeführte Klassenbibliotheken müssen auf ihre Priorität achten, die von der Basisklasse geerbt wird, und durch durch Merkmale eingefügte Mitglieder überschrieben werden. Die Rangfolge besteht darin, dass Mitglieder der aktuellen Klasse die Methoden des Merkmals überschreiben und das Merkmal die geerbten Methoden überschreibt.
Die Merkmalsklasse unterstützt nicht die Definition von Klassenkonstanten. Die im Merkmal definierten Eigenschaften können in der aktuellen Klasse oder in geerbten Klassen nicht neu definiert werden.
Konfliktlösung
Wir können mehrere Merkmalsklassenbibliotheken in einer Klassenbibliothek einführen, wenn beide Merkmale eine Methode mit demselben Namen definieren, sofern keine explizite Lösung vorhanden ist Ein Konflikt führt zu einem schwerwiegenden Fehler.
Um den Namenskonflikt mehrerer Merkmale in derselben Klasse zu lösen, müssen Sie den Stattoperator verwenden, um explizit anzugeben, welche der widersprüchlichen Methoden verwendet werden sollen.
Mit der obigen Methode können nur andere Methoden ausgeschlossen werden. Der as-Operator kann eine der widersprüchlichen Methoden unter einem anderen Namen einführen.
Das obige ist der detaillierte Inhalt vonBeispielcode-Sharing der Traits-Funktion, die in das thinkPHP5.0-Framework eingeführt wurde. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!