Heim >Backend-Entwicklung >PHP-Tutorial >Deklaration und Verwendung von Namespaces in PHP
* Deklaration und Verwendung des Namespace
* 1. Verwenden Sie Schlüsselwörter: Namespace
* 2.php5.3+
* 3. Namespace darf nicht vor jedem Code existieren außer Deklarationen und Kommentaren, noch HTML
* 4. Der Namespace beginnt standardmäßig an der globalen Position, und der globale Raum wird durch dargestellt, ähnlich dem Stammverzeichnis
* 5. Wenn Wenn das Skript einen Namensraum deklariert, muss der Zugriff auf alle Mitglieder den Namensraum verwenden, einschließlich der Systemfunktionen
//1. Deklarieren Sie einen Namensraum
namespace one; class Demo{public $name='Peter Zhu';} const SITE='PHP中文网'; function add($a,$b){return $a+$b;}
//Wenn ich eine Klasse mit demselben Namen deklarieren möchte, können Konstanten und Funktionen einen anderen Namespace deklarieren
//2. In einem Skript sind mehrere Namespaces zulässig
//Deklarieren Sie einen Namespace: Zweitens, verwenden Sie tow als Referenz
namespace two;
//Deklarieren Sie nun die Klasse Demo, die Konstante SITE und die Funktion add, es wird keinen Konflikt geben
class Demo{public $name='朱老师';} const SITE = 'www.php.cn'; function add($a,$b){return $a+$b;}
//Ich glaube, Sie können es sehen, das hier ist sehr ähnlich. In verschiedenen Verzeichnissen dürfen Dateien mit demselben Namen erstellt werden.
echo (new Demo)->name, '<br>'; //默认输出的是当前空间的内容
//Überprüfen Sie, was der aktuelle Namespace ist: __NAMESPACE__
echo '当前命名空间是: ',__NAMESPACE__,'<br>';
//Außerdem können Sie den aktuellen Namensraum mitbringen, um auf Mitglieder im aktuellen Raum zuzugreifen
//Einen Klassennamen mit dem aktuellen Namensraum generieren
$className = __NAMESPACE__.'\Demo'; echo (new $className)->name,'<br>';
//Sie können den vollständigen Namensraum mitbringen Name, vom globalen Raum ausgehend, entspricht dem Start vom Stammverzeichnis
//Fachterminologie: vollständig qualifizierter Name
echo (new \two\Demo)->name, '<hr>';
//3. Wie erreiche ich einen raumübergreifenden Zugriff?
//Wenn wir auf die Attribute in der Demo-Klasse in Space One zugreifen möchten, wie gehen wir vor?
//Space-übergreifender Zugriff, wie verzeichnisübergreifender Zugriff auf Dateien, muss sein vollständiger Leerzeichenpfad
//Zum Beispiel möchten wir auf die Mitglieder in der Klasse Demo in einem Leerzeichen zugreifen
echo 'one空间的类成员:',(new \one\Demo)->name,'<br>';
//4. In einem Skript, das einen Namespace deklariert, wie man darauf zugreift die vom System vordefinierten Methoden?
// Beispielsweise wird ein Array mit nur einem Zeichen deklariert
$welcome = 'php中文网欢迎您'; \print_r($welcome); echo '<br>'; print($welcome); echo '<hr>';
//Wir haben gerade gesagt, dass der Zugriff auf globale Mitglieder im Bereich hinzugefügt werden muss hier hinzugefügt?
//Denn wenn der Benutzer nicht über „Hinzufügen“ verfügt, wird zuerst in diesem Bereich nach der Funktion var_dump() gesucht,
//Wenn sie nicht gefunden wird wird dann im globalen Raum suchen, sodass kein Fehler gemeldet wird
//Aber wenn wir in Wenn eine var_dump()-Funktion auch im aktuellen zwei Raum erstellt wird, wird nur die benutzerdefinierte var_dump() im aktuellen Bereich wird ausgeführt.
function print_r($arg) { echo '我是当前空间声明的函数调用:'.$arg; } print_r($welcome); echo '<br>';
//Äquivalente Aufrufsyntax:
\two\print_r($welcome);
//Hinweis: Dieses print_r() hat nichts mit dem integrierten print_r() des Systems zu tun. Es hat einfach den gleichen Namen
//Genau wie in Shanghai gibt es eine Jangtse-Flussstraße, und es gibt auch eine Jangtse-Flussstraße in Hefei. Abgesehen vom gleichen Namen haben diese beiden Straßen überhaupt keine Beziehung
// Yangtze River Road, Baoshan District, Shanghai
// Luyang District, Hefei City Yangtze River Road
// Ich glaube, niemand wird denken, dass dies dasselbe ist Straße?
//Tatsächlich sollte die vollständige Aufrufanweisung dieser beiden Funktionen so aussehen:
//1 Aufruf des Systems:
\print_r($welcome);
//2 . Aufruf des aktuellen Space:
\two\print_r($welcome);
//Obwohl die Namen gleich sind, ist der Besitz unterschiedlich
Das obige ist der detaillierte Inhalt vonDeklaration und Verwendung von Namespaces in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!