Heim Backend-Entwicklung PHP-Tutorial Namespaces, Hauptfunktionen von PHP

Namespaces, Hauptfunktionen von PHP

May 22, 2018 pm 04:16 PM
php Name 空间

Namespace dient hauptsächlich dazu, das Problem möglicher Konflikte zwischen Klassen und Funktionen im Code zu lösen. In diesem Artikel werden Ihnen die wichtigsten Funktionen des PHP-Namespace vorgestellt, einschließlich der Definition des Namespace und anderer Wissenspunkte. Freunde, die ihn benötigen, können darauf verweisen.

Der Namespace dient hauptsächlich dazu, das Problem möglicher Konflikte zwischen Klassen und Klassen zu lösen Funktionen im Code, während andere Sprachen diese Funktion schon seit langem hatten, kam PHP erst spät auf den Markt, was auch den Aufstieg von Composer zur Folge hatte, daher ist es eine sehr wichtige Funktion .

Definition des Namespace

Ein Namespace ist ein Container, der hauptsächlich zur Identifizierung der darunter liegenden Klassen und Funktionen verwendet wird. Sobald ein Namespace definiert ist, gehört der darunter liegende Code zu diesem Namespace, daher sollte die Definition des Namespace ganz am Anfang des Codes stehen.

Für dasselbe Paket muss der Code im selben Namespace oder Sub-Namespace nicht in einer PHP-Datei definiert werden. Der Code im Sub-Namespace dient dazu, die Arbeit eines bestimmten Moduls abzuschließen Zusammengenommen wird es zu einem Paket-vollständigen Namespace.

Wenn der von Ihnen geschriebene Code keinen Namespace definiert, bedeutet dies, dass er zum globalen Namespace (Symbol) gehört, sodass Sie direkt auf Klassen oder Funktionen verweisen können (ohne das Symbol hinzuzufügen).

Drei Möglichkeiten, auf Namespace-IDs zu verweisen

(1) Der vollständig qualifizierte Name

ähnelt einem absoluten Pfad auf dem Betriebssystem ist der vollständige Pfad, sodass beim Verständnis keine Missverständnisse auftreten.

Zum Beispiel wird C im neuen ABC in die C-Klasse unter dem AB-Namespace aufgelöst.

(2) Der qualifizierte Name

ähnelt einem relativen Pfad auf dem Betriebssystem, er enthält einen Teil des Namens und verweist auf den aktuellen Namespace.

Wenn beispielsweise BC() unter Namespace A aufgerufen wird, ist der letztendlich referenzierte Namespace ABC().

(3) Der nicht qualifizierte Name

ähnelt dem qualifizierten Namen, enthält jedoch keine Unternamensräume.

Wenn beispielsweise C() unter dem Namespace AB aufgerufen wird, ist der letzte referenzierte Namespace ABC().

Veranschaulichen Sie die drei Zitiermethoden anhand eines Beispiels:

namespace \Example;
require_once "fnction.php";
class ClassA {}
function Function() {}
//完全限定名称
\Example\Function();
\Example\B\Function(); 
//限定名称
B\Function(); //指向 \Example\B\Function();
//非限定名称
$test = new ClassA(); //resolves to \Example\ClassA
Function(); //指向 \Example\Function
Nach dem Login kopieren

Hinweis:

•Wenn innerhalb eines Namespace keine Definitionen von Funktionen und Konstanten im aktuellen Bereich gefunden werden, meldet PHP keinen Fehler. Suchen Sie stattdessen im globalen Namespace danach.

•Wenn innerhalb eines Namespace keine Klassendefinition im aktuellen Bereich gefunden wird, meldet PHP direkt einen Fehler und geht nicht zum globalen Bereich, um die entsprechende Klasse zu finden, wenn Sie also auf eine interne Klasse verweisen müssen Bei einer benutzerdefinierten Klasse oder einer benutzerdefinierten Klasse muss der vollständig qualifizierte Name verwendet werden.

Um ein einfaches Beispiel zu geben, schreiben Sie zunächst einen Code (im Namespace definiert) und nennen Sie ihn function.php:

namespace Foo\Bar\subnamespace;
const FOO = 1;
function foo() 
{
  return "foo\r\n";
}
class foo 
{
  static function staticmethod()
  {
    return __METHOD__ . "\r\n" ;
  }
  function foofunction()
  {
    return __METHOD__ . "\r\n" ;
  }
}
Nach dem Login kopieren

Schreiben Sie ein weiteres Stück Code test.php, bei dem es sich ebenfalls um Code unter dem Namensraum handelt:

namespace secondsp;
include 'function.php';
class foo
{
  function foofunction()
  {
    return __METHOD__ . "\r\n" ;
  }
}
function is_file($file)
{
  return true ;
}
//非限定名称:实例化secondsp\foo类对象
$obj = new foo; 
echo $obj->foofunction();
//实例化Foo\Bar\subnamespace\foo 类对象
$obj = new Foo\Bar\subnamespace\foo ;
echo $obj->foofunction();
//代码会报错,在命名空间内部,假如无法找到当前命名空间下的类,则会报错
//$obj = new ArrayObject(array(1)); 
$obj = new \ArrayObject(array(1)); 
//在命名空间内部,假如无法找到当前命名空间下的函数或者常量,则会寻找 native function
echo strlen("nihao");
 //引用当前命名空间下的函数
var_dump(is_file('nihao')); //True
//引用全局函数
var_dump(\is_file('nihao')); //False
Nach dem Login kopieren

import, alias

Wenn die zu verwendende Namespace-Hierarchie lang und zahlreich ist, ist die Verwendung besonders problematisch. Sie können daher das Schlüsselwort use zum Importieren von Namespaces, Klassen, Konstanten, Funktionen usw. verwenden und diese dann verwenden, um direkt auf das Ganze zu verweisen Namen. Das Schlüsselwort alias kann importierte Klassen und Funktionen umbenennen.

Beispielsweise zur Verwendung des Schlüsselworts use befindet sich dieser Code im globalen Namespace:

include 'function.php';
use Foo\Bar\subnamespace\foo ;
$obj = new foo;
echo $obj->foofunction();
use Foo\Bar\subnamespace\foo as aliasfunname;
$obj = new aliasfunname;
echo $obj->foofunction();
use Foo\Bar\subnamespace ; 
$obj = new subnamespace\foo ;
echo $obj->foofunction();
use Foo\Bar\subnamespace as aliasname;
$obj = new aliasname\foo ;
echo $obj->foofunction();
//由于调用代码并不在命名空间内,所以对于全局的类,无需引入使用
$obj = new ArrayObject(array(1)); 
//导入一个函数
use function Foo\Bar\subnamespace\foo  ;
echo foo();
use function Foo\Bar\subnamespace\foo as func;
echo func();
use const Foo\Bar\subnamespace\FOO;
//echo FOO;
Nach dem Login kopieren

Zusammenfassung:

•Im Gegensatz zu Python ist der Namespace in PHP ein semantisches Konzept und hat nichts mit der Position und dem Layout des spezifischen Codes zu tun. Mit anderen Worten: Code, der Namespace verwendet, muss Bibliotheksdateien selbst importieren. Alle Dateien) spielt keine Rolle, wie die Bibliotheksdateien organisiert sind. Wenn in Python eine __init__.py-Datei in einem Modul oder Paket vorhanden ist, führt der Python-Parser automatisch die Dateien des Pakets oder aller Module ein.

•Das Konzept des Bereichs in PHP ist sehr schwach und die globale Domäne und die lokale Domäne werden klar unterschieden. Beispielsweise können Variablen im globalen Raum nicht in Funktionen oder Klassen referenziert werden. Bei Namespaces ist die Situation anders. Wenn der Code, der den Namespace definiert, die Konstanten und Funktionen im entsprechenden Namespace nicht finden kann, verwendet er globale Konstanten und Funktionen, und wenn er die Klasse nicht im entsprechenden Namespace finden kann (einschließlich seiner eigenen Define-Klasse). ), meldet der Code direkt einen Fehler.

•Wenn Sie den Namespace über das Schlüsselwort use verwenden, müssen Sie ihn nicht über den vollständig qualifizierten Namen (Symbol) importieren, da PHP bereits davon ausgeht, dass der importierte Namespace ein vollständig qualifizierter Namespace ist.

•Konstanten, Funktionen, Klassen, Schnittstellen und andere Namespaces können über das Schlüsselwort use importiert werden.

• Namespace ist eine Sprachfunktion. Um eine effektivere Nutzung zu erreichen, sollte es eine Nutzungsspezifikation und einen automatischen Lademechanismus geben, nämlich die PSR-4-Spezifikation.

Verwandte Empfehlungen:

PHPNamespace, Detaillierte Erläuterung von Merkmalen und Generatorfällen

phpNamespaceVerwenden eines grafischen Tutorials (mit Code)

phpNamespaceNutzungsdetails

Das obige ist der detaillierte Inhalt vonNamespaces, Hauptfunktionen von PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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ßer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

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.

CakePHP Datum und Uhrzeit CakePHP Datum und Uhrzeit Sep 10, 2024 pm 05:27 PM

Um in cakephp4 mit Datum und Uhrzeit zu arbeiten, verwenden wir die verfügbare FrozenTime-Klasse.

Besprechen Sie CakePHP Besprechen Sie CakePHP Sep 10, 2024 pm 05:28 PM

CakePHP ist ein Open-Source-Framework für PHP. Es soll die Entwicklung, Bereitstellung und Wartung von Anwendungen erheblich vereinfachen. CakePHP basiert auf einer MVC-ähnlichen Architektur, die sowohl leistungsstark als auch leicht zu verstehen ist. Modelle, Ansichten und Controller gu

CakePHP-Datei hochladen CakePHP-Datei hochladen Sep 10, 2024 pm 05:27 PM

Um am Datei-Upload zu arbeiten, verwenden wir den Formular-Helfer. Hier ist ein Beispiel für den Datei-Upload.

CakePHP erstellt Validatoren CakePHP erstellt Validatoren Sep 10, 2024 pm 05:26 PM

Der Validator kann durch Hinzufügen der folgenden zwei Zeilen im Controller erstellt werden.

CakePHP-Protokollierung CakePHP-Protokollierung Sep 10, 2024 pm 05:26 PM

Die Anmeldung bei CakePHP ist eine sehr einfache Aufgabe. Sie müssen nur eine Funktion verwenden. Sie können Fehler, Ausnahmen, Benutzeraktivitäten und von Benutzern durchgeführte Aktionen für jeden Hintergrundprozess wie Cronjob protokollieren. Das Protokollieren von Daten in CakePHP ist einfach. Die Funktion log() wird bereitgestellt

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

CakePHP-Kurzanleitung CakePHP-Kurzanleitung Sep 10, 2024 pm 05:27 PM

CakePHP ist ein Open-Source-MVC-Framework. Es erleichtert die Entwicklung, Bereitstellung und Wartung von Anwendungen erheblich. CakePHP verfügt über eine Reihe von Bibliotheken, um die Überlastung der häufigsten Aufgaben zu reduzieren.

See all articles