Heim  >  Artikel  >  Backend-Entwicklung  >  PHP-Namespace

PHP-Namespace

王林
王林Original
2024-08-29 13:00:16796Durchsuche

Namespaces in PHP ähneln Namespaces in C++, die Elemente durch Wiederverwendung von Namen kapseln, um Namenskonflikte zu vermeiden. In vielen Situationen wird es auch als abstraktes Konzept angesehen. Es ermöglicht die erneute Deklaration derselben Klassen oder Schnittstellen oder Funktionen oder konstanten Funktionen in einem bestimmten Namespace, ohne dass der schwerwiegende Fehler auftritt. Dieser Namespace ist ein hierarchisch beschrifteter Codeblock, der einen normalen PHP-Code enthält. Es besteht aus einem gültigen PHP-Code. Darüber hinaus betrifft es Codetypen wie Klassen, Funktionen, Konstanten und Schnittstellen. Ein Namespace wird mit dem Schlüsselwort namespace.

deklariert WERBUNG Beliebter Kurs in dieser Kategorie PHP-ENTWICKLER - Spezialisierung | 8-Kurs-Reihe | 3 Probetests

Starten Sie Ihren kostenlosen Softwareentwicklungskurs

Webentwicklung, Programmiersprachen, Softwaretests und andere

Syntax:

namespace sample;

Hier wird ein Namespace-Beispiel deklariert.

Ähnlich wie andere PHP-Identifikatoren sollte auch der Namespace einigen Regeln folgen. Das heißt, ein Namespace sollte mit einem Unterstrich oder Buchstaben beginnen, gefolgt von Buchstaben, Unterstrichen oder Zahlen.

Wie funktioniert der Namespace in PHP?

Stellen wir uns einen Namensraum als einen Schrank vor, in dem wir alle Gegenstände wie Kleider, Accessoires usw. aufbewahren können. Für jede Person wird es einen separaten Schrank geben, in dem ihre Gegenstände aufbewahrt werden können. Um den Schrank jeder Person zu identifizieren, kann jeder mit einem Etikett versehen werden, sodass es nicht zu Verwechslungen kommt. In der Vergangenheit trennten Programmierer Codebasen durch Unterstriche in den Konstanten, Klassen und Funktionen. Es ähnelt dem Beschriften aller Gegenstände und deren Aufbewahrung in einem großen Schrank. Auch wenn es organisiert ist, wird die Effizienz nicht höher sein.

In dieser Situation erscheint das Namespace-Konzept. Dieselbe Klasse, Schnittstelle, Funktion und Konstante können ohne schwerwiegende Fehler in verschiedenen Namespaces deklariert werden. Im Grunde ist der Namespace ein hierarchisch beschrifteter Codeblock, der einen normalen PHP-Code enthält.

Wie wir bereits erwähnt haben, kapseln Namespaces in PHP Elemente durch Wiederverwendung von Namen, um Namenskonflikte zu vermeiden.

Stellen Sie sich zum Beispiel ein PHP-Programm wie unten erwähnt vor.

Code:

<?php
namespace sample ;
function func()
{
echo ' Never give up! Keep trying . . . ' ;
}
// Resolves to the function
func() ;
?>

Es ist ersichtlich, dass eine Funktion func vorhanden ist und bei der Ausführung des Codes einen Text ausgibt.

Mit zunehmender Größe der PHP-Codebibliothek besteht die Möglichkeit, dass ein bereits deklarierter Klassenname oder eine Funktion unbeabsichtigt wiederverwendet wird. Das Problem verschärft sich, wenn Komponenten und Plugins von Drittanbietern hinzugefügt werden. Darüber hinaus können Namenskollisionsprobleme mithilfe von Namespaces gelöst werden. PHP-Konstanten, -Funktionen und -Klassen können in Namespace-Bibliotheken zusammengefasst werden. Diese Namespaces können einer bestimmten Hierarchie folgen, ähnlich den im Dateisystem des Computers verfügbaren Ordnern. Das Konzept der Sub-Namespaces ist sehr nützlich für die Organisation der Projektstruktur. Wenn das Projekt Datenbankzugriff benötigt, können alle mit der Datenbank verbundenen Codes, wie Ausnahmen einer Datenbank und Verbindungshandler, in einem Unternamensraum namens DB gespeichert werden.

Um die Flexibilität aufrechtzuerhalten, ist es besser, Unternamensräume in Unterverzeichnissen zu speichern. Dies inspiriert zur Projektstrukturierung und erleichtert die Verwendung von Autoloadern, die dem Standard PSR-0 folgen.

Normalerweise wird in PHP ein Backslash als Namespace-Trennzeichen verwendet.

SampleSub Sample
SampleSubSampleSamp
CollegeProjCommonWidget

In den Fällen, in denen eine Namensraumdeklaration global erfolgt, kann sie wie unten gezeigt ohne Verwendung eines Namens deklariert werden.

Code:

<?php
namespace {
// Global . . . !
}
?>

In manchen Fällen können mehrere Namespaces innerhalb eines PHP-Codes verwendet werden, wie unten gezeigt.

Code:

<?php
namespace sam {
}
namespace samp {
}
namespace {
}
?>
Hinweis: Zu beachten ist, dass der Namespace zuerst im PHP-Programm deklariert werden muss. Wenn unten ein Code angegeben wird, wird er als ungültig erkannt, da der Namespace zunächst nicht angegeben wird.

Code:

<?php
echo "Never Give up ! " ;
namespace Html ;
. . .
?>

Beispiele für PHP-Namespace

Im Folgenden finden Sie Beispiele für PHP-Namespace:

Beispiel #1

PHP-Programm, das einen Namespace verwendet und eine Funktion sowohl implizit als auch explizit aufruft.

Code:

<?php
namespace sample;
function func()
{
echo 'Never give up! Keep trying. . .';
}
// Resolves to the function
func();
// Explicitly resolves to the function
namespace\func();
?>

Ausgabe:

PHP-Namespace

Im Programm wird zunächst ein Namespace-Beispiel erstellt. Danach ist ersichtlich, dass eine Funktion func definiert ist und beim Ausführen des Codes einen Text ausgibt. Da die Funktion implizit und explizit aufgerufen wird, wird der Text zweimal gedruckt.

Angenommen, der Namespace wird nach der Definition der Funktion deklariert, wie unten gezeigt. Was wird dann passieren?

Code:

<?php
function func()
{
echo 'Never give up! Keep trying. . .';
}
// Resolves to the function
func();
namespace sample;
// Explicitly resolves to the function
namespace\func();
?>

Yes…. An error will be displayed, as shown below. That is, namespace should be defined at the beginning of the program.

Output:

PHP-Namespace

Example #2

PHP program that uses a namespace and calls a function for printing table details.

Code:

<?php
namespace Html;
class sampletable {
public $heading= "";
public $cntrows= 0;
public function fnc() {
echo "<p> The Table used is '{$this->heading}' that has {$this->cntrows} different rows. . . .</p>";
}
}
$tb= new sampletable ();
$tb->heading= " Students ";
$tb->cntrows= 8 ;
?>
<!DOCTYPE html>
<html>
<body>
<?php
$tb->fnc();
?>
</body>
</html>

Output:

PHP-Namespace

In the program, a namespace Html is created first. After that, a class sampletable is created with variables heading, cnt rows. A function func is also present, which contains a text. Heading students and 8 as count of rows were given after that. On executing the code, the line gets printed with the table name and number of rows.

Conclusion

Namespaces in PHP is similar to namespaces in C++ that encapsulates items by reusing names in order to avoid name conflicts. In this article, different aspects such as syntax, working, and examples of size() functions are explained in detail.

Das obige ist der detaillierte Inhalt vonPHP-Namespace. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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
Vorheriger Artikel:PHP-SubstrNächster Artikel:PHP-Substr