__NAMESPACE__
enthält den Namensraum wo der Code geschrieben wurde, in dem __NAMESPACE__
erscheint. Es hat "buchstäblichen Spielraum", soweit dieses Konzept hier gilt. Dasselbe gilt für Funktionen, die Sie innerhalb anderer Namespaces oder Objekte aufrufen, die Sie in anderen Namespaces instanziieren. Sie beziehen sich alle auf ihren eigenen ursprünglichen Namespace, nicht auf den, in dem der Code gerade ausgeführt wird.
Namensräume beeinflussen wirklich nur Namen, Kennzeichnungen. dies für alle Absichten und Zwecke:
namespace Foo\Bar;
class Baz {}
ist nur eine Abkürzung für:
class Foo\Bar\Baz {}
, die für alle Absichten und Zwecke ist äquivalent zu:
class Foo_Bar_Baz {}
Namespaces werden nicht zur Laufzeit aufgelöst oder sie haben einen wirklichen Einfluss auf die Laufzeit, sie dienen lediglich dazu, Namen zu präfixisieren, während sie immer noch eine kurze Syntax erlauben und nicht ständig lange Namen schreiben müssen.
__NAMESPACE__
bezieht sich auf das "Name Präfix" der aktuellen Entität, wie Foo_Bar
oben; nicht mehr, nicht weniger.
"Als Merkmale sind effektiv Code kopieren/einfügen ..." Nein, sie sind nicht. –
@KaloyanDoichinov Danke, das scheint ein beliebter Weg zu sein, sie zu konzeptualisieren, der nicht ganz genau ist! – Arth