Namespaces definieren
(PHP 5 >= 5.3.0, PHP 7, PHP 8)
Obwohl jeder gültige PHP-Quellcode in Namespaces eingeschlossen werden kann, werden nur die folgenden Arten von Code von Namespaces beeinflusst: Klassen (inklusive abstrakter Klassen und Traits), Interfaces, Funktionen und Konstanten.
Namespaces werden mit dem Schlüsselwort namespace
definiert. Eine Datei, die einen Namespace beinhaltet, muss den
Namespace am Anfang der Datei vor jeglichem anderen Code deklarieren -
mit Ausnahme des declare-Schlüsselwortes.
Beispiel #1 Einen einzelnen Namespace deklarieren
<?php
namespace MyProject;
const CONNECT_OK = 1;
class Connection { /* ... */ }
function connect() { /* ... */ }
?>
Der einzige Quellcode, der vor einer Namespacedeklaration stehen darf, ist derHinweis: Vollständig qualifizierte Namen (d.h. Namen, die mit einem Rückwärtsschrägstrich beginnen) sind in Namensraumdeklarationen nicht erlaubt, weil solche Konstrukte als relative Namensraumausdrücke interpretiert werden.
declare
-Ausdruck, der die Kodierung der Quellcodedatei
definiert. Gleichzeitig darf kein Nicht-PHP-Code vor einer Namespacedeklaration
stehen - auch keine zusätzlichen Leerzeichen, Zeilenumbrüche oder Tabulatoren.
Beispiel #2 Einen einzelnen Namespace deklarieren
<html>
<?php
namespace MyProject; // fatal error - Namespace muss der erste Ausdruck im Skript sein
?>
Zusätzlich darf - im Gegensatz zu anderen PHP-Konstrukten - der selbe Namespace in mehreren Dateien definiert werden, womit man den Inhalt eines Namespaces im Dateisystem aufteilen kann.