Heim > Artikel > Backend-Entwicklung > Teilen von PHP-Kernel-Namespace-Tipps
In Wikipedia lautet die Definition von Namespace: Namespace (englisch: Namespace) bedeutet Bezeichner (Identifier) Kontext .
Ein Bezeichner kann in mehreren Namespaces definiert werden und seine Bedeutung in verschiedenen Namespaces ist irrelevant. In Programmiersprachen ist ein Namespace ein spezieller Bereich, der Bezeichner innerhalb dieses Bereichs enthält und selbst durch einen Bezeichner dargestellt wird, sodass eine Reihe logisch zusammengehöriger Bezeichner durch einen Bezeichner organisiert werden. Funktions- und Klassenbereiche können als implizite Namespaces betrachtet werden, die untrennbar mit Sichtbarkeit, Zugänglichkeit und Objektlebensdauer verbunden sind.
Namespace kann als eine Möglichkeit angesehen werden, Dinge zu kapseln, und Sie können auch Schreiben sehen ist eine Form der Organisation der Codestruktur. Dieses abstrakte Konzept und diese Organisationsform sind in vielen Sprachen zu finden. In PHP werden Namespaces verwendet, um zwei Arten von Problemen zu lösen, die beim Erstellen von wiederverwendbarem Code wie Klassen oder Funktionen beim Schreiben von Klassenbibliotheken oder Anwendungen auftreten:
1. Es besteht ein Namenskonflikt zwischen vom Benutzer geschriebenem Code und internen Klassen/Funktionen/Konstanten von PHP oder Klassen/Funktionen/Konstanten von Drittanbietern.
2. Erstellen Sie einen Aliasnamen (oder Kurznamen) für einen sehr langen Bezeichnernamen (normalerweise definiert, um die erste Art von Problem zu lindern). Verbessern Sie die Lesbarkeit von Quellcode.
PHP unterstützt Namespace-Funktionen ab Version 5.3.0. Sehen Sie sich ein Beispiel für die Definition und Verwendung von Namespaces an:
<?php namespace tipi; class Exception { public static $var = 'think in php internal'; } const E_ALL = "E_ALL IN Tipi"; function strlen(){ echo 'strlen in tipi'; } echo Exception::$var; echo strlen(Exception::$var);
1. Beispiel:
2. Definition des Namensraums
3 . Verwendung des Namespace
Nehmen Sie den Funktionsaufruf als Beispiel. Wenn eine Funktion aufgerufen werden muss, wird die Funktion zend_do_begin_function_call aufgerufen. In dieser Funktion wird der Funktionsname überprüft, wenn der Namespace verwendet wird, und die aufgerufene Funktion ist zend_resolve_non_class_name. In der Funktion zend_resolve_non_class_name wird eine Beurteilung basierend auf dem Typ getroffen und die relevanten Ergebnisse werden zurückgegeben:
1.Vollständig qualifizierte Namensfunktion: Das Programm trifft diese Beurteilung zunächst basierend darauf, ob das erste Zeichen „“ ist wird direkt beim Parsen zurückgegeben. Beispielsweise ein globaler Aufruf, der mit strlen beginnt, oder ein Aufruf ähnlich der zuvor definierten tipiException.2.Alle unqualifizierten Namen und qualifizierten Namen (nicht vollständig qualifizierte Namen) : Bestimmen Sie anhand des aktuellen Importregelprogramms, ob es sich um einen Alias handelt , und Rufen Sie den entsprechenden Namespace-Namen aus der HashTable ab, in der Aliase während der Kompilierung gespeichert werden, und führen Sie ihn mit dem vorhandenen Funktionsnamen zusammen. Die Speicherung und Generierung von Aliasen wird im folgenden Inhalt erläutert:
3.Im Namensraum: Alle ohne Import Die qualifizierten Namen Bei Regeltransformationen wird der aktuelle Namensraumname vorangestellt. Abschließend wird beurteilt, ob es sich im aktuellen Namespace befindet. Am Ende gibt das Programm einen Funktionsnamen zurück, der den Namespace zusammenführt.
4. Aliase/Importe
Referenz oder Import per Alias zulassen Der externe vollqualifizierte Name ist ein wichtiges Merkmal des Namespace.
Dies ähnelt in etwa der Art und Weise, wie Sie symbolische Links zu anderen Dateien oder Verzeichnissen in einem Unix-ähnlichen Dateisystem erstellen können. PHP-Namespace-Unterstützung Es gibt zwei Möglichkeiten, Aliase oder Importe zu verwenden: Aliase für Klassennamen oder Aliase für Namespace-Namen.
Das obige ist der detaillierte Inhalt vonTeilen von PHP-Kernel-Namespace-Tipps. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!