Heim > Backend-Entwicklung > PHP-Tutorial > Deklaration und Verwendung von Namespaces in PHP

Deklaration und Verwendung von Namespaces in PHP

无忌哥哥
Freigeben: 2023-04-01 21:26:02
Original
1786 Leute haben es durchsucht

* 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;}
Nach dem Login kopieren


//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;
Nach dem Login kopieren

//Deklarieren Sie nun die Klasse Demo, die Konstante SITE und die Funktion add, es wird keinen Konflikt geben

class Demo{public $name='朱老师';}
const  SITE = 'm.sbmmt.com';
function add($a,$b){return $a+$b;}
Nach dem Login kopieren

//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, &#39;<br>&#39;; //默认输出的是当前空间的内容
Nach dem Login kopieren

//Überprüfen Sie, was der aktuelle Namespace ist: __NAMESPACE__

echo &#39;当前命名空间是: &#39;,__NAMESPACE__,&#39;<br>&#39;;
Nach dem Login kopieren

//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__.&#39;\Demo&#39;;
echo (new $className)->name,&#39;<br>&#39;;
Nach dem Login kopieren

//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, &#39;<hr>&#39;;
Nach dem Login kopieren

//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 &#39;one空间的类成员:&#39;,(new \one\Demo)->name,&#39;<br>&#39;;
Nach dem Login kopieren

//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 = &#39;php中文网欢迎您&#39;;
\print_r($welcome); echo &#39;<br>&#39;;
print($welcome); echo &#39;<hr>&#39;;
Nach dem Login kopieren

//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 &#39;我是当前空间声明的函数调用:&#39;.$arg;
}
print_r($welcome); echo &#39;<br>&#39;;
Nach dem Login kopieren

//Äquivalente Aufrufsyntax:

\two\print_r($welcome);
Nach dem Login kopieren
Nach dem Login kopieren

//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);
Nach dem Login kopieren

//2 . Aufruf des aktuellen Space:

\two\print_r($welcome);
Nach dem Login kopieren
Nach dem Login kopieren

//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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage