## Das Schlüsselwort namespace und die magische Konstante __NAMESPACE__

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

PHP unterstützt zwei Arten des abstrakten Zugriffs auf Elemente innerhalb eines Namespaces, die magische Konstante `__NAMESPACE__` und das Schlüsselwort `namespace`.

Der Wert von `__NAMESPACE__` ist ein String, der den Namen des aktuellen Namespace beinhaltet. In globalem Code ohne Namespaces beinhaltet dies einen leeren String.

Beispiel #1 __NAMESPACE__-Beispiel, Code mit Namespace

`<?php
namespace MyProject;
echo '"', __NAMESPACE__, '"'; // gibt "MyProject" aus
?>`

Beispiel #2 __NAMESPACE__-Beispiel, globaler Code

`<?php
echo '"', __NAMESPACE__, '"'; // gibt "" aus
?>`
Die Konstante `__NAMESPACE__` ist nützlich, um dynamische Namen zu konstruieren, zum Beispiel:

Beispiel #3 __NAMESPACE__ zur dynamischen Namenszusammensetzung verwenden

`<?php
namespace MyProject;
function get($classname)
{
$a = __NAMESPACE__ . '\\' . $classname;
return new $a;
}
?>`

Das Schlüsselwort `namespace` kann verwendet werden, um explizit ein Element des aktuellen Namespaces oder eines untergeordneten Namespaces anzufordern. Es ist das äquivalent der Namespaces zum `self`-Operator für Klassen.

Beispiel #4 Der namespace-Operator, innerhalb eines Namespace

`<?php
namespace MyProject;
use blah\blah as mine; // siehe "Namespaces verwenden: Aliase/Importieren"
blah\mine(); // ruft die Funktion MyProject\blah\mine() auf
namespace\blah\mine(); // ruft die Funktion MyProject\blah\mine() auf
namespace\func(); // ruft die Function MyProject\func() auf
namespace\sub\func(); // ruft die Function MyProject\sub\func() auf
namespace\cname::method(); // ruft die statische Methode "method" der Klasse MyProject\cname auf
$a = new namespace\sub\cname(); // erzeugt ein Objekt der Klasse MyProject\sub\cname
$b = namespace\CONSTANT; // weist den Wert der Konstante MyProject\CONSTANT $b zu
?>`

Beispiel #5 Der namespace-Operator, in globalem Code

`<?php
namespace\func(); // ruft die Function func() auf
namespace\sub\func(); // ruft die Function sub\func() auf
namespace\cname::method(); // ruft die statische Methode "method" der Klasse cname auf
$a = new namespace\sub\cname(); // erzeugt ein Objekt der Klasse sub\cname
$b = namespace\CONSTANT; // weist den Wert der Konstante CONSTANT $b zu
?>`
`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open