Namespaces und dynamische Sprachfeatures
Namespaces verwenden: Importieren/Aliase
Namespaces
PHP Manual

## Namespace-Schlüsselwort und __NAMESPACE__-Konstante

PHP unterstützt zwei Arten des abstrakten Zugriffs auf Elemente innerhalb eines Namenspaces, 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: Importieren/Aliase"
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
?>`

Namespaces und dynamische Sprachfeatures
Namespaces verwenden: Importieren/Aliase
Namespaces
PHP Manual