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

Deklaration und Verwendung von Namespaces in PHP

无忌哥哥
无忌哥哥Original
2018-06-28 15:52:391723Durchsuche

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

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

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

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

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

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

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

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

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

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