Inhaltsverzeichnis
Namespace " >Namespace
2. Mehrstufige Namespaces und drei Zugriffsmethoden " >2. Mehrstufige Namespaces und drei Zugriffsmethoden
1. Unqualifizierte Namenszugriffsmethode " >1. Unqualifizierte Namenszugriffsmethode
2. Vollqualifizierte Namenszugriffsmethode " >2. Vollqualifizierte Namenszugriffsmethode
3. Qualifizierte Namenszugriffsmethode " >3. Qualifizierte Namenszugriffsmethode
3. Einführungsmechanismus von Namespace- und Raumklassenelementen " >3. Einführungsmechanismus von Namespace- und Raumklassenelementen
1. Einführung von Namespace " >1. Einführung von Namespace
2. Führen Sie räumliche Elemente ein " >2. Führen Sie räumliche Elemente ein
4. Öffentlicher Raum " >4. Öffentlicher Raum
5. Namespace ist ein virtueller Definitionsraum, keine reale Existenz Verzeichnis " > 5. Namespace ist ein virtueller Definitionsraum, keine reale Existenz Verzeichnis
Heim Schlagzeilen Unverzichtbar für Anfänger zum Erlernen des Frameworks im Jahr 2017: Ausführliche Erklärung von Namespaces im Thinkphp5-Framework-Tutorial

Unverzichtbar für Anfänger zum Erlernen des Frameworks im Jahr 2017: Ausführliche Erklärung von Namespaces im Thinkphp5-Framework-Tutorial

Jul 06, 2017 am 09:27 AM
php 必备

ThinkPHP ist ein schnelles, kompatibles und einfaches, leichtes PHP-Entwicklungsframework. Die Verwendung von ThinkPHP-Framework kann unseren Entwicklungsprozess erheblich vereinfachen. Dieser Artikel richtet sich an PHP-Chinesisch und soll jedem helfen, ein sehr wichtiges Konzept in ThinkPHP zu erlernen: Namespace .

Namespace

ThinkPHP übernimmt die Namespace-Definition und das automatische Laden von Klassenbibliotheksdateien und löst so effektiv das Problem mehrerer Module und des Composer-Namespace Konflikte zwischen Klassenbibliotheken werden gelöst und ein effizienterer automatischer Lademechanismus für Klassenbibliotheken implementiert.

Sie können zu unserem PHP-Chinesisch-Website-Kurs wechseln: Lernen Sie das PHP-Programmier-Namespace-Tutorial an Ihren Fingerspitzen

Unsere PHP-Chinesisch-Website Verwandte Es werden auch Videokurse angeboten: Dugu Jiujian (5)_ThinkPHP5 Video-Tutorial

Unverzichtbar für Anfänger zum Erlernen des Frameworks im Jahr 2017: Ausführliche Erklärung von Namespaces im Thinkphp5-Framework-Tutorial

Da Funktionen in der PHP-Syntax Überladung nicht unterstützt werden Was passiert, wenn es in einer Anwendung zwei Methoden mit demselben Namen gibt? Um Probleme durch wiederholte Namen zu vermeiden, steht im Yii-Framework vor allen Klassen das Wort C, und das Konzept von Namespaces wurde in ThinkPHP eingeführt. Es gibt ein paar Punkte, die besondere Aufmerksamkeit erfordern:

a) Der Namespace ist ein virtueller Definitionsraum, kein reales Verzeichnis

b) Die Trennzeichen des Namespace sind alle Backslashes

c) Namespace ist nur für Funktionen, Klassen und Konstanten (konstantdefinierte Konstanten, nicht definierte Konstanten) gültig.

d) Es gibt drei Zugriffsmethoden auf den Namensraum: unqualifizierte Namenszugriffsmethode; vollständig qualifizierte Namenszugriffsmethode;

Das Folgende wird nacheinander ausführlich erläutert.

1. Namespace ist nur für Funktionen, Klassen und Konstanten gültig (konstantdefinierte Konstanten, nicht definierte Konstanten).

Hier deklarieren wir zwei Namensräume space1 und space2 , es gibt Funktion getmsg() mit demselben Namen, Konstante a mit demselben Namen und Klasse Animal mit demselben Namen unter den beiden Namespaces, da sie sich in unterschiedlichen Namespaces befinden, treten keine Fehler auf. Wir öffnen es im Browser und erhalten folgende Ausgabe: helloworld.

Was passiert, wenn wir versuchen, mithilfe von define zwei Konstanten mit demselben Namen zu definieren?

Beim Öffnen im Browser wird folgender Fehler gemeldet:

Der Namespace ist also nur für Funktionen, Klassen und Konstanten (durch Konstante definierte Konstanten, nicht durch Definition definierte Konstanten) gültig.

2. Mehrstufige Namespaces und drei Zugriffsmethoden

Die oben deklarierten Namespaces space1 und space2 sind beide einstufige Namespaces , ein Namespace in der Form space1space2space3 ist ein mehrstufiger Namespace und das Trennzeichen ist. Im Folgenden werden drei Namespace-Zugriffsmethoden vorgestellt:

1. Unqualifizierte Namenszugriffsmethode

Beim Zugriff mit unqualifiziertem Namenszugriff wird auf die Funktionen unter dem aktuellen Namespace zugegriffen (dasselbe gilt für Klassen und Konstanten), sodass das Ausgabeergebnis des obigen Codes lautet: Welt.

2. Vollqualifizierte Namenszugriffsmethode

Wenn Sie auf die Methode getmsg() unter name1space1 im Namespace name2space2 zugreifen möchten, können Sie dies tun Verwenden Sie den vollständig qualifizierten Namenszugriff (entspricht dem absoluten Pfadzugriff).

Die Ausgabe des obigen Codes lautet also: Hallo.

3. Qualifizierte Namenszugriffsmethode

Der Unterschied zwischen der qualifizierten Namenszugriffsmethode und der vollständig qualifizierten Namenszugriffsmethode liegt nur bei Front. Wenn im obigen Beispiel qualifizierter Namenszugriff verwendet wird, ändern Sie die letzte Zeile in: name1space1getmsg();

Zu diesem Zeitpunkt öffnen wir es im Browser und finden den folgenden Fehler:

Zeigt an, dass wir die Funktion getmsg() unter dem Namespace name2space2name1space1 nicht finden können. Der Grund dafür ist, dass die qualifizierte Namenszugriffsmethode dem relativen Pfadzugriff entspricht. Wir verwenden die qualifizierte Namenszugriffsmethode im aktuellen Namespace, um auf Folgendes zuzugreifen: name1space1getmsg(), das nach der Funktion getmsg() sucht name1space1 im aktuellen Namespace. Wenn es nicht gefunden werden kann, wird ein Fehler gemeldet. Wenn wir daher einen anderen Namespace mit dem Namen name2space2name1space1 deklarieren, kann der obige Zugriff wie folgt normal ausgeführt werden:

Das Ausgabeergebnis lautet: hello-world.

3. Einführungsmechanismus von Namespace- und Raumklassenelementen

1. Einführung von Namespace

Anhand des obigen Beispiels können wir erkennen, dass wir, wenn wir Funktionen, Konstanten oder Klassenelemente in einem anderen Namespace im aktuellen Namespace verwenden möchten, einen vollständig qualifizierten Zugriff verwenden müssen, um auf Code zuzugreifen und ihn zu schreiben. Dies ist daher relativ umständlich Wir können einen Namespace einführen und dann den qualifizierten Namenszugriff verwenden, um den Zugriffsprozess zu vereinfachen.

Das Ausgabeergebnis ist: HalloHund

2. Führen Sie räumliche Elemente ein

Verwenden Sie ähnlich wie bei der Einführung von Namespaces das Schlüsselwort use, um räumliche Elemente einzuführen, und verwenden Sie dann einfach den unqualifizierten Zugriff . Eine Klasse mit demselben Namen wie die eingeführte Klasse darf jedoch nicht im aktuellen Namespace existieren, da sonst ein Fehler auftritt.

Das Ausgabeergebnis ist: Hunde-Rhabarber.

4. Öffentlicher Raum

Wenn wir nicht das Schlüsselwort namespace verwenden, um einen Namespace zu deklarieren, gehört er dazu der öffentliche Raum.

Hier erstellen wir zwei PHP-Dateien, 1.php und 2.php, 1.php-Namespace ist name1space1, 2.php ist der öffentliche Raum.

1.php:

namespace  name1\space1;
header("content-type:text/html;charset=utf-8");
class Animal
{
    public $obj = 'dog';
    static $name = '大黄';
}
function getmsg()
{
    echo 'hello';
}

const MN = 123;

//在命名空间中引入公共命名空间

include ('./2.php');

getmsg();       //访问的是当前空间下的getmsg()函数
echo &#39;</br>&#39;;
\getmsg();      //访问的是公共命名空间(即2.php文件)下的getmsg()函数

echo &#39;</br>&#39;;
echo MN;          //会先在当前命名空间下寻找MN常量,如果找到就输出,如果找不到,就会去公共命名空间寻找MN常量
echo &#39;</br>&#39;;
echo  \MN;         //访问的是公共命名空间(即2.php文件)下的MN常量
Nach dem Login kopieren

2.php:

//没有指定命名空间,则其属于公共命名空间
function getmsg()
{
    echo &#39;world&#39;;
}

const MN = &#39;456&#39;;
Nach dem Login kopieren

im Browser Öffnen 1.php, das Ausgabeergebnis ist:

hello
world
123
456

5. Namespace ist ein virtueller Definitionsraum, keine reale Existenz Verzeichnis

In thinkphp5.0 ist der Namespace ein virtueller Definitionsraum, kein reales Verzeichnis. Es ist nur so, dass bei der offiziellen Deklaration des Namespace der Name des Namespace bewusst der Verzeichnisstruktur entspricht.

Zum Beispiel öffnen wir die Datei Index.php im Ordner application/index/controller. Ihr Namespace lautet: appindexcontroller. ist in der Verzeichnisstruktur nicht vorhanden.

Namespace-Alias

Mit dem Framework können Sie beispielsweise Aliase für Namespaces definieren :

namespace app\index\model;
use think\Model;
class User extends Model
{
}
Nach dem Login kopieren

Die ursprüngliche Aufrufmethode im Controller lautet:

namespace app\index\controller;
use app\index\model\User;
class Index
{
 public function index()
 {
  $user = new User();
 }
}
Nach dem Login kopieren

Wenn wir den Namespace-Alias ​​in der öffentlichen Datei der Anwendung wie folgt registrieren:

\think\Loader::addNamespaceAlias(&#39;model&#39;,&#39;app\index\model&#39;);
Nach dem Login kopieren

Dann kann der obige Controller-Code geändert werden in:

namespace app\index\controller;
use model\User;
class Index
{
 public function index()
 {
  $user = new User();
 }
}
Nach dem Login kopieren

相关资料推荐: 

1. 什么是php命名空间?命名空间用法实例详解

2. php命名空间与自动加载类用法实例详解

3. php关于use、命名空间、引入类文件和自动加载类的实例详解

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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 bringt mehrere neue Funktionen, Sicherheitsverbesserungen und Leistungsverbesserungen mit einer beträchtlichen Menge an veralteten und entfernten Funktionen. In dieser Anleitung wird erklärt, wie Sie PHP 8.4 installieren oder auf PHP 8.4 auf Ubuntu, Debian oder deren Derivaten aktualisieren. Obwohl es möglich ist, PHP aus dem Quellcode zu kompilieren, ist die Installation aus einem APT-Repository wie unten erläutert oft schneller und sicherer, da diese Repositorys in Zukunft die neuesten Fehlerbehebungen und Sicherheitsupdates bereitstellen.

So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein Dec 20, 2024 am 11:31 AM

Visual Studio Code, auch bekannt als VS Code, ist ein kostenloser Quellcode-Editor – oder eine integrierte Entwicklungsumgebung (IDE) –, die für alle gängigen Betriebssysteme verfügbar ist. Mit einer großen Sammlung von Erweiterungen für viele Programmiersprachen kann VS Code c

7 PHP-Funktionen, die ich leider vorher nicht kannte 7 PHP-Funktionen, die ich leider vorher nicht kannte Nov 13, 2024 am 09:42 AM

Wenn Sie ein erfahrener PHP-Entwickler sind, haben Sie möglicherweise das Gefühl, dass Sie dort waren und dies bereits getan haben. Sie haben eine beträchtliche Anzahl von Anwendungen entwickelt, Millionen von Codezeilen debuggt und eine Reihe von Skripten optimiert, um op zu erreichen

Wie analysiert und verarbeitet man HTML/XML in PHP? Wie analysiert und verarbeitet man HTML/XML in PHP? Feb 07, 2025 am 11:57 AM

Dieses Tutorial zeigt, wie XML -Dokumente mit PHP effizient verarbeitet werden. XML (Extensible Markup-Sprache) ist eine vielseitige textbasierte Markup-Sprache, die sowohl für die Lesbarkeit des Menschen als auch für die Analyse von Maschinen entwickelt wurde. Es wird üblicherweise für die Datenspeicherung ein verwendet und wird häufig verwendet

Erklären Sie JSON Web Tokens (JWT) und ihren Anwendungsfall in PHP -APIs. Erklären Sie JSON Web Tokens (JWT) und ihren Anwendungsfall in PHP -APIs. Apr 05, 2025 am 12:04 AM

JWT ist ein offener Standard, der auf JSON basiert und zur sicheren Übertragung von Informationen zwischen Parteien verwendet wird, hauptsächlich für die Identitätsauthentifizierung und den Informationsaustausch. 1. JWT besteht aus drei Teilen: Header, Nutzlast und Signatur. 2. Das Arbeitsprinzip von JWT enthält drei Schritte: Generierung von JWT, Überprüfung von JWT und Parsingnayload. 3. Bei Verwendung von JWT zur Authentifizierung in PHP kann JWT generiert und überprüft werden, und die Funktionen und Berechtigungsinformationen der Benutzer können in die erweiterte Verwendung aufgenommen werden. 4. Häufige Fehler sind Signaturüberprüfungsfehler, Token -Ablauf und übergroße Nutzlast. Zu Debugging -Fähigkeiten gehört die Verwendung von Debugging -Tools und Protokollierung. 5. Leistungsoptimierung und Best Practices umfassen die Verwendung geeigneter Signaturalgorithmen, das Einstellen von Gültigkeitsperioden angemessen.

PHP -Programm zum Zählen von Vokalen in einer Zeichenfolge PHP -Programm zum Zählen von Vokalen in einer Zeichenfolge Feb 07, 2025 pm 12:12 PM

Eine Zeichenfolge ist eine Folge von Zeichen, einschließlich Buchstaben, Zahlen und Symbolen. In diesem Tutorial wird lernen, wie Sie die Anzahl der Vokale in einer bestimmten Zeichenfolge in PHP unter Verwendung verschiedener Methoden berechnen. Die Vokale auf Englisch sind a, e, i, o, u und sie können Großbuchstaben oder Kleinbuchstaben sein. Was ist ein Vokal? Vokale sind alphabetische Zeichen, die eine spezifische Aussprache darstellen. Es gibt fünf Vokale in Englisch, einschließlich Großbuchstaben und Kleinbuchstaben: a, e, ich, o, u Beispiel 1 Eingabe: String = "TutorialPoint" Ausgabe: 6 erklären Die Vokale in der String "TutorialPoint" sind u, o, i, a, o, ich. Insgesamt gibt es 6 Yuan

Erklären Sie die späte statische Bindung in PHP (statisch: :). Erklären Sie die späte statische Bindung in PHP (statisch: :). Apr 03, 2025 am 12:04 AM

Statische Bindung (statisch: :) implementiert die späte statische Bindung (LSB) in PHP, sodass das Aufrufen von Klassen in statischen Kontexten anstatt Klassen zu definieren. 1) Der Analyseprozess wird zur Laufzeit durchgeführt.

Was sind PHP Magic -Methoden (__construct, __Destruct, __call, __get, __set usw.) und geben Sie Anwendungsfälle an? Was sind PHP Magic -Methoden (__construct, __Destruct, __call, __get, __set usw.) und geben Sie Anwendungsfälle an? Apr 03, 2025 am 12:03 AM

Was sind die magischen Methoden von PHP? Zu den magischen Methoden von PHP gehören: 1. \ _ \ _ Konstrukt, verwendet, um Objekte zu initialisieren; 2. \ _ \ _ Destruct, verwendet zur Reinigung von Ressourcen; 3. \ _ \ _ Call, behandeln Sie nicht existierende Methodenaufrufe; 4. \ _ \ _ GET, Implementieren Sie den dynamischen Attributzugriff; 5. \ _ \ _ Setzen Sie dynamische Attributeinstellungen. Diese Methoden werden in bestimmten Situationen automatisch aufgerufen, wodurch die Code -Flexibilität und -Effizienz verbessert werden.