Was ist ein Namespace?
Die Namen von in PHP deklarierten Funktionen, Klassen und Konstanten dürfen nicht im selben Lauf wiederholt werden, da sonst ein schwerwiegender Fehler auftritt. Eine gängige Lösung besteht darin, sich auf ein Präfix zu einigen. Während der Projektentwicklung ist es beispielsweise nicht möglich, dass sowohl der Controller als auch das Datenmodell im Benutzermodul dieselbe Benutzerklasse deklarieren. Sie müssen ihre jeweiligen Funktionspräfixe vor dem Klassennamen hinzufügen. Sie können die User-Klasse im Controller als ActUser-Klasse und die User-Klasse im Datenmodell als ModelUser-Klasse bezeichnen. Obwohl dieses Problem durch Hinzufügen eines Präfixes gelöst werden kann, wird der Name zu lang, was bedeutet, dass während der Entwicklung mehr Code geschrieben wird. In Versionen nach PHP5.3 wurden viele andere Hochsprachen (wie Java, C# usw.) hinzugefügt, um sehr ausgereifte Funktionen zu verwenden ----- Namespace Einer seiner klarsten Zwecke besteht darin, das Problem zu lösen von doppelten Namen. Namespaces unterteilen den Code in verschiedene Bereiche, und die Namen der Konstanten, Funktionen und Klassen in den einzelnen Bereichen beeinflussen sich nicht gegenseitig.
Hinweis: Konstanten haben sich seit PHP5.3 geändert. Sie können das Schlüsselwort const verwenden, um Konstanten außerhalb der Klasse zu deklarieren. Obwohl const und define beide zum Deklarieren von Konstanten verwendet werden, wirkt define in einem Namespace global, während const auf den aktuellen Raum wirkt. Die hier genannten Konstanten beziehen sich auf -Konstanten, die mit const deklariert wurden.
Die Rolle und Funktion von Namespaces ist sehr leistungsstark. Sie müssen sich beim Schreiben von Plug-Ins oder allgemeinen Bibliotheken keine Sorgen mehr über doppelte Namen machen. Wenn das Projekt jedoch ein bestimmtes Niveau erreicht und das Problem doppelter Namen durch Hinzufügen von Namespaces gelöst werden muss, wird der Arbeitsaufwand nicht geringer sein als bei der Umgestaltung von Namen. Daher sollte eine Namenskonvention von Beginn des Projekts an gut geplant und festgelegt werden.
Grundlegende Anwendung von Namespaces
Standardmäßig werden alle Deklarationen von Konstanten, Klassen und Funktionen in PHP im globalen Raum platziert. Versionen nach PHP5.3 verfügen über separate Leerzeichendeklarationen, und derselbe Name in verschiedenen Leerzeichen führt nicht zu Konflikten. Unabhängige Namespaces werden mit dem Schlüsselwort namespace deklariert.
Der Code lautet wie folgt:
<?php //声明这段代码的命名空间 namespace abc; // 这里是代码 ?>
Hinweis: Der Namespace muss oben im PHP-Skript geschrieben werden und muss die erste PHP-Anweisung sein. nicht bevor Namespace Nicht-PHP-Code, HTML oder Leerzeichen angezeigt werden.
Ab dem Code-Namespace abc gibt es ein unabhängiges Leerzeichen, bis der nächste Namespace erscheint oder das Skript endet. Benennen Sie dieses Leerzeichen abc.
Wenn Sie einen Namespace oder mehrere Namespaces für denselben Code definieren, ist dies nicht möglich. Wenn mehrere Namespaces zusammen verwendet werden, wird nur der letzte Namespace erkannt, aber Sie können im selben Code verschiedene Namespace-Codes definieren die Datei.
Der Code lautet wie folgt:
<?php namespace project1; class user{ //此 user 属于project1 空间的类 } namespace project2; class user{ //此 user 属于project2 空间的类 } // 上面的替代语法,另一种声明方法 namespace project3{ //命名空间 project3 下的代码 } ?>
Der obige Code ist zwar machbar, wenn separate Benutzerklassen in verschiedenen Namespaces verwendet werden, aber es Es wird empfohlen, für jede unabhängige Datei nur einen Namensraum zu definieren, damit die Lesbarkeit des Codes optimal ist. Im selben Raum können Sie jedes Element in Ihrem eigenen Raum direkt aufrufen, aber Sie können keine Elemente in anderen Räumen zwischen verschiedenen Räumen direkt aufrufen. Sie müssen die Namespace-Syntax verwenden. Der Code lautet wie folgt:
<?php namespace project1; const test = "这是一个常量<br>"; function demo(){ echo "这是一个函数<br>"; } class user { function fun(){ echo "这是一个 user 类"; } } echo test; //在自己的命名空间中直接使用常量 demo(); //在自己的命名空间中直接调用函数 /*************** project2 ******************/ namespace project2; const test2 = "这也是一个常量<br>"; echo test2; \project1\demo(); //调用 project1 空间中的 demo() $user = new\project1\user(); //使用 project1 空间的类实例化对象 $user->fun(); ?>
Im obigen Beispiel werden zwei Leerzeichen, Projekt1 und Projekt2, deklariert. Sie können die in diesem Leerzeichen deklarierten Elemente direkt in Ihrem eigenen Leerzeichen aufrufen und die Elemente in aufrufen project1 in project2. Elemente verwenden eine ähnliche Syntax wie Dateipfade und Space-Namen und Elementnamen . Die Verwendung ist die gleiche für Klassen, Funktionen und Konstanten.
【Empfohlene verwandte Tutorials】
1. "php.cn Dugu Jiujian (4) - PHP-Video-Tutorial
2.Namensraum: Obwohl wir den gleichen Namen und das gleiche Geschlecht haben, gehören wir zu einer anderen Zeit und einem anderen Raum
Eine vollständige Reihe von Tutorials zur PHP-Programmierung von Anfang an zur Meisterschaft
Das obige ist der detaillierte Inhalt vonWas ist ein Namensraum? Grundlegende Anwendungsfreigabe des PHP-Namespace. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!