Heim >Backend-Entwicklung >PHP-Problem >So verwenden Sie das Schlüsselwort „use' im PHP-Namespace
In PHP kann das Schlüsselwort use verwendet werden, um einen Namespace zu importieren, die Syntax „use namespace;“; es kann auch verwendet werden, um Funktionen und Konstanten zu importieren und Aliase für sie festzulegen, die Syntax „use namespace as alias;“ .
Die Betriebsumgebung dieses Tutorials: Windows7-System, PHP7.1-Version, DELL G3-Computer
Was ist ein Namespace?
Im weitesten Sinne ist Namespace eine Möglichkeit, Dinge zu kapseln, und dieses abstrakte Konzept ist an vielen Stellen zu sehen. Beispielsweise werden Verzeichnisse in Betriebssystemen verwendet, um zusammengehörige Dateien zu gruppieren, und sie fungieren als Namespaces für die Dateien im Verzeichnis.
Definition des Namespace
Namespace in PHP wurde in PHP5.3 hinzugefügt. Wenn Sie C++ kennen, ist Namespace nichts Neues. Allerdings sind Namespaces in PHP immer noch sehr wichtig.
PHP-Namespace kann die folgenden zwei Arten von Problemen lösen:
Namenskonflikte zwischen vom Benutzer geschriebenen Codes und internen Klassen/Funktionen/Konstanten von PHP oder Klassen/Funktionen/Konstanten von Drittanbietern;
ist sehr lang ein Aliasname (oder Kurzname) für den Bezeichnernamen (oft zur Linderung des ersten Problemtyps definiert), um die Lesbarkeit des Quellcodes zu verbessern.
Definieren Sie einen Namespace (mit dem Schlüsselwort Namespace)
Obwohl jeder legale PHP-Code in einen Namespace aufgenommen werden kann, sind nur Klassen (einschließlich abstrakter Klassen und Merkmale), Schnittstellen, Funktionen und Konstanten davon betroffen. Code ist davon betroffen Namensräume.
Die Definition eines Namespace muss über das Schlüsselwort Namespace deklariert werden. Das Syntaxformat lautet wie folgt:
namespace 命名空间名;
[Beispiel] Lassen Sie uns zeigen, wie der Namespace definiert wird:
<?php namespace MyProject; // 定义名为 MyProject 的命名空间。 const CONNECT_OK = 1; class Myclass { /* ... */ } function Myfunc() { /* ... */ } ?>
Zusätzlich zur Definition der Quelldateikodierung vor der Deklaration Der Namespace Mit Ausnahme der Declare-Anweisung auf diese Weise kann nicht der gesamte Nicht-PHP-Code (einschließlich Leerzeichen) vor der Namespace-Deklaration erscheinen.
Namespaces verwenden: alias/import
PHP ermöglicht die Verwendung externer Namespaces durch Alias-Referenzen oder Importe, was ein wichtiges Merkmal von Namespaces ist. 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.
Verwenden Sie das Schlüsselwort use, um den Namespace-Import zu implementieren. Ab PHP5.6 dürfen Funktionen und Konstanten importiert und Aliase für sie festgelegt werden. Das Syntaxformat ist wie folgt:
use namespace;
In PHP werden Aliase durch die Operatoren use und as implementiert. Das Syntaxformat ist wie folgt:
use 命名空间 as 别名;
[Beispiel] Verwenden Sie den use-Operator, um Aliase zu importieren und zu verwenden.
<?php namespace foo; use My\Full\Classname as Another; // 下面的例子与 use My\Full\NSname as NSname 相同 use My\Full\NSname; // 导入一个全局类 use ArrayObject; // 导入一个函数 use function My\Full\functionName; // 导入一个函数并定义别名 use function My\Full\functionName as func; // 导入一个常量 use const My\Full\CONSTANT; $obj = new namespace\Another; // 实例化 foo\Another 对象 $obj = new Another; // 实例化 My\Full\Classname 对象 NSname\subns\func(); // 调用 My\Full\NSname\subns\func 函数 $a = new ArrayObject(array(1)); // 实例化 ArrayObject 对象 // 如果不使用 "use \ArrayObject" ,则实例化一个 foo\ArrayObject 对象 func(); // 调用 My\Full\functionName 函数 echo CONSTANT; // 打印 My\Full\CONSTANT 常量 ?>
Hinweis: Für Namen in einem Namespace (vollqualifizierte Namen, die Namespace-Trennzeichen enthalten, wie z. B. FooBar, und relative globale Namen, die keine Namespace-Trennzeichen enthalten, wie z. B. FooBar) ist der führende Backslash unnötig und wird nicht empfohlen, da importiert Namen müssen vollständig qualifiziert sein und werden nicht relativ zum aktuellen Namespace aufgelöst.
Um den Vorgang zu vereinfachen, unterstützt PHP auch das Importieren mehrerer Namespaces in einer Zeile, getrennt durch,. Der Beispielcode lautet wie folgt:
<?php use My\Full\Classname as Another, My\Full\NSname; $obj = new Another; // 实例化 My\Full\Classname 对象 NSname\subns\func(); // 调用 My\Full\NSname\subns\func 函数 ?>
Der Importvorgang wird kompiliert und ausgeführt, aber der dynamische Klassenname, Funktionsname oder konstanter Name ist nein.
<?php use My\Full\Classname as Another, My\Full\NSname; $obj = new Another; // 实例化一个 My\Full\Classname 对象 $a = 'Another'; $obj = new $a; // 实际化一个 Another 对象 ?>
Außerdem betrifft der Importvorgang nur unqualifizierte und qualifizierte Namen. Vollqualifizierte Namen sind von Importen nicht betroffen, da sie deterministisch sind.
Empfohlenes Lernen: „PHP-Video-Tutorial“
Das obige ist der detaillierte Inhalt vonSo verwenden Sie das Schlüsselwort „use' im PHP-Namespace. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!