## 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, Traits und Enums), 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.

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open