Heim >Backend-Entwicklung >PHP-Tutorial >Erste Schritte mit PHP-Namespaces

Erste Schritte mit PHP-Namespaces

WBOY
WBOYOriginal
2016-08-08 09:29:41946Durchsuche

1. Was ist der Namespace in PHP?

"Was ist ein Namespace? Im Großen und Ganzen ist ein Namespace eine Möglichkeit, Dinge zu kapseln. Er kann an vielen Orten gefunden werden. Siehe Dieses abstrakte Konzept dient beispielsweise dazu, verwandte Dateien im Verzeichnis zu gruppieren. foo.txt kann in beiden Verzeichnissen /home/greg und /home/other existieren, aber zwei foo.txt-Dateien dürfen nicht im selben Verzeichnis existieren. 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. " - Übersicht über Namespaces

2. Wie versteht man PHP-Namespaces?

> Im Wesentlichen ist ein Namespace ein Container. Wir können Klassen, Funktionen und Variablen innerhalb desselben Namespaces ablegen und müssen außerhalb des Namespaces referenziert oder importiert werden Sie enthalten.

Das Konzept des Namensraums ist das gleiche wie das der Dateiverzeichnisse im aktuellen Verzeichnis, wenn nötig Um auf Dateien in anderen Verzeichnissen zuzugreifen, müssen Sie einen relativen oder einen absoluten Pfad eingeben.

Referenzmethode:

Importmethode:

namespace foo;

class Foo {
    public function foo()
    {
        return \top\namespace\bar\Bar::fuck();
    }
}

namespace foo;

use top\namespace\bar\Bar;

class Foo {
    public function foo()
    {
        return Bar::fuck();
    }
}
Importieren entspricht dem Kopieren des Ziels Klasse in den aktuellen Namespace.

3. Was sind die praktischen Anwendungen von PHP-Namespaces? um die folgenden zwei Probleme zu lösen:

1 Der vom Benutzer geschriebene Code und Namenskonflikte zwischen Klassen/Funktionen/Konstanten in PHP oder Klassen von Drittanbietern/ Funktionen/Konstanten 2. Für sehr lange Bezeichnernamen (normalerweise zur Linderung der ersten Art von Problem. definiert) wird ein Aliasname (oder Kurzname) erstellt, um die Lesbarkeit des Quellcodes zu verbessern >

Der derzeit sehr beliebte Namespace-Paketmanager/Abhängigkeitsmanager ist größtenteils auf die Popularität von PHP5.3 zurückzuführen , was zum richtigen Zeitpunkt geschah. Sie können es unter https://packagist.org/ herunterladen Composer-Paket, ähnlich wie yum, npm oder gem.

Einige Tipps

1 Rufen Sie einander direkt an und gehören Sie zur gleichen Familie. Beispielsweise können Sie in der PageController-Klasse in Laravel direkt Code wie Page::all() zum Aufrufen schreiben Seitenmodell, da beide unter dem Namensraum der obersten Ebene liegen.

2 Wenn eine Klasse in einem Nicht-Top-Level-Namespace existiert, kann sie nur die aufrufen same Es sind andere Klassen im aktuellen Namespace, die nicht „referenziert“ oder „importiert“ werden müssen. Sie gehören zur gleichen Familie. Jeder Subnamespace ist ein anderer Namespace, ein anderer Container, ohne eine besondere Beziehung außer der zwischen Containern.

3. Laravel verwendet Classmap für das automatische Laden (Autoload), obwohl PHP über erweiterte Funktionen verfügt , aber dies ist nur eine logische Beziehung, die erforderliche Datei ist weiterhin erforderlich. Die entsprechende Beziehung zwischen dieser Klasse und der Datei besteht /vendor/composer/autoload_classmap.php , Composer Dump-Autoload wird jedes Mal neu kompiliert und generiert.

Nachdruck von: http://lvwenhan.com/php/401.html Das Obige hat eine Einführung in PHP-Namespaces gegeben, einschließlich einiger Aspekte des Inhalts. Ich hoffe, dass es für Freunde hilfreich sein wird, die sich für PHP-Tutorials interessieren.

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