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() { /* ... */ }
?>
Hinweis:
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.
Der einzige Quellcode, der vor einer Namespacedeklaration stehen darf,
ist der
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.