PHP mit Aliasen und Importen

伊谢尔伦
Freigeben: 2016-11-23 10:52:13
Original
1283 Leute haben es durchsucht

Das Ermöglichen der Referenzierung oder des Imports externer vollständig qualifizierter Namen über Aliase ist eine wichtige Funktion von Namespaces. 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.

Der PHP-Namespace unterstützt zwei Arten der Verwendung von Aliasen oder Importen: die Verwendung von Aliasen für Klassennamen oder die Verwendung von Aliasen für Namespace-Namen. Beachten Sie, dass PHP den Import von Funktionen oder Konstanten nicht unterstützt.

In PHP werden Aliase durch die Verwendung des Operators implementiert. Das Folgende ist ein Beispiel, das alle drei möglichen Importmethoden verwendet:

Beispiel #1 Verwenden Sie den Use-Operator, um Aliase zu importieren/verwenden

<?php
    namespace foo;
    use My\Full\Classname as Another;
    // 下面的例子与 use My\Full\NSname as NSname 相同
    use My\Full\NSname;
    // 导入一个全局类
    use \ArrayObject;
    $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 对象
?>
Nach dem Login kopieren

Achten Sie auf den Namen im Namespace (einschließlich Name Für vollständig qualifizierte Namen mit Leerzeichentrennzeichen wie FooBar und entsprechende globale Namen ohne Namespacetrennzeichen wie FooBar ist der führende Backslash unnötig und nicht zulässig, da der importierte Name vollständig qualifiziert sein muss. Es wird keine relative Auflösung für den aktuellen Namespace durchgeführt .

Um die Bedienung zu vereinfachen, unterstützt PHP auch mehrere Use-Anweisungen in einer Zeile

Beispiel #2 Import/Use-Aliase über den Use-Operator, einschließlich mehrerer Use-Anweisungen in einer Zeile

<?php
    use My\Full\Classname as Another, My\Full\NSname;
    $obj = new Another; // 实例化 My\Full\Classname 对象
    NSname\subns\func(); // 调用函数 My\Full\NSname\subns\func
?>
Nach dem Login kopieren

Der Importvorgang wird während der Kompilierung ausgeführt, der dynamische Klassenname, Funktionsname oder Konstantenname jedoch nicht.

Beispiel #3 Import und dynamische Namen

<?php
    use My\Full\Classname as Another, My\Full\NSname;
    $obj = new Another; // 实例化一个 My\Full\Classname 对象
    $a = &#39;Another&#39;;
    $obj = new $a; // 实际化一个 Another 对象
?>
Nach dem Login kopieren

Außerdem betrifft der Importvorgang nur unqualifizierte und qualifizierte Namen. Vollqualifizierte Namen sind von Importen nicht betroffen, da sie deterministisch sind.

Beispiel #4 Import und vollständig qualifizierte Namen

<?php
    use My\Full\Classname as Another, My\Full\NSname;
    $obj = new Another; // 实例化My\Full\Classname类的对象 
    $obj = new \Another; // 实例化Another类的对象 
    $obj = new Another\thing; // 实例化My\Full\Classname\thing类的对象 
    $obj = new \Another\thing; // 实例化Another\thing类的对象 
?>
Nach dem Login kopieren


Verwandte Etiketten:
php
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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!