Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erläuterung der Rolle des PHP-Namespace

Detaillierte Erläuterung der Rolle des PHP-Namespace

伊谢尔伦
伊谢尔伦Original
2017-05-22 11:18:154092Durchsuche

Eine der klarsten Funktionen des PHP-Namespace besteht darin, das Problem doppelter Namen zu lösen. Zwei Funktionen oder Klassen dürfen in PHP nicht denselben Namen haben, da sonst ein schwerwiegender Fehler auftritt. Im vorherigen Kapitel wurde vorgestellt, was der PHP-Namespace ist . Die offizielle PHP-Website hat es klar definiert und visuell erklärt. Hier ist ein Absatz, der direkt von der offiziellen PHP-Website kopiert wurde: Im weitesten Sinne ist Namespace eine Methode zum Kapseln von Dingen. Diese Abstraktion ist an vielen Stellen zu finden. Verzeichnisse werden beispielsweise in Betriebssystemen verwendet, um zusammengehörige Dateien zu gruppieren, und sie fungieren als Namespaces für die Dateien im Verzeichnis. Beispielsweise kann die Datei foo.txt gleichzeitig in den Verzeichnissen /home/greg und /home/other vorhanden sein, zwei foo.txt-Dateien können jedoch nicht im selben Verzeichnis vorhanden sein. Darüber hinaus müssen wir beim Zugriff auf die foo.txt-Datei außerhalb des Verzeichnisses /home/greg den Verzeichnisnamen und das Verzeichnistrennzeichen vor den Dateinamen setzen, um /home/greg/foo.txt zu erhalten. Die Anwendung dieses Prinzips auf den Bereich der Programmierung ist das Konzept des Namespace.

Die Einführung des Namespace-Schlüsselworts in den PHP-Namespace dient dazu, verschiedene „Probleme“ zu lösen, die im objektorientierten Programmierprozess von PHP aufgetreten sind. Die spezifischen Probleme sind wie folgt:

  1. Namenskonflikte zwischen vom Benutzer geschriebenem Code und PHP-internen Klassen/Funktionen/Konstanten oder Klassen/Funktionen/Konstanten von Drittanbietern.

  2. Um Problem 1 zu lindern, werden beim Schreiben verschiedener Klassen normalerweise längere Klassennamen verwendet oder Klassen, die unterschiedliche Funktionen implementieren, Namenspräfixe (oder Suffixe) hinzugefügt.

  3. Wenn die magische Funktion __autoload nicht verwendet wird und jede Klasse eine exklusive PHP-Datei belegt, werden zum Aufrufen verschiedener Klassen andere PHP-Dateien verwendet, die diese Klassen verwenden. Schreiben Sie mehr include (oder require oder require_once)-Anweisungen am Anfang.

Wir erstellen zunächst einen Namespace. In derselben Skriptdatei können mehrere Namespaces erstellt werden.

Der Code lautet wie folgt:

<?php
//创建一个名为&#39;Article&#39;的命名空间
namespace Article;
//此Comment属于Article空间的元素
class Comment { }
//创建一个名为&#39;MessageBoard&#39;的命名空间
namespace MessageBoard;
//此Comment属于MessageBoard空间的元素
class Comment { }
?>

Sie können andere Elemente zwischen verschiedenen Leerzeichen nicht direkt aufrufen, Sie müssen die Namespace-Syntax verwenden.

Der Beispielcode lautet wie folgt:

<?php
namespace Article;
class Comment { }
namespace MessageBoard;
class Comment { }
//调用当前空间(MessageBoard)的Comment类
$comment = new Comment();
//调用Article空间的Comment类
$article_comment = new \Article\Comment();
?>

Wie Sie sehen können, wird beim Aufruf der Comment-Klasse im Artikelbereich im MessageBoard-Bereich eine Syntax wie ein Dateipfad verwendet: Name des Bereichselements

Mit Ausnahme von Klassen ist die Verwendung von Funktionen und Konstanten gleich. Nachfolgend habe ich neue Elemente für die beiden Bereiche erstellt und sie im MessageBoard-Bereich ausgegeben.

Der Code lautet wie folgt:

<?php
namespace Article;
const PATH = &#39;/article&#39;;
function getCommentTotal() {
 return 100;
}
class Comment { }
namespace MessageBoard;
const PATH = &#39;/message_board&#39;;
function getCommentTotal() {
 return 300;
}
class Comment { }
//调用当前空间的常量、函数和类
echo PATH; //message_board
echo getCommentTotal(); //300
$comment = new Comment();
//调用Article空间的常量、函数和类
echo \Article\PATH; //article
echo \Article\getCommentTotal(); //100
$article_comment = new \Article\Comment();
?>

Die folgenden Ergebnisse werden erhalten:/message_board300/article100


【Empfohlene Tutorials】

1. "php.cn Dugu Jiujian (4) - PHP-Video-Tutorial"

2 >Namespace: Obwohl wir den gleichen Namen und das gleiche Geschlecht haben, gehören wir einer anderen Zeit und einem anderen Raum an

3

Eine vollständige Reihe von Tutorials zur PHP-Programmierung vom Einstieg bis zum Master

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Rolle des PHP-Namespace. 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