PHP-Namespaces - ein level aufsteigen?
Beispiel1:
namespace Inori\Test;
Klasse MainTest
{
}
Beispiel2:
namespace Inori\Test\Untertest;
Klasse Aufgabengruppe erweitert ????
{
}
Frage: gibt es eine Möglichkeit, um schnell ein level aufsteigen im namespace so Untertest verlängern könnte MainTest? so etwas wie "../MainTest"
? Oder bin ich stecken mit \Inori\Test\MainTest
?
- Namespaces in PHP können nicht geschachtelt werden: es gibt keine Hierarchie, pro sagen. Jeder namespace wird deklariert, unabhängig von einander, es gibt keine Eltern-Kind-Beziehung zwischen namespaces (noch) nicht.
Foo\Bar
ist ein ganz anderer namespace alsFoo\Bar\Baz
. - So stieß ich auf diese und erkannte, dass ich nicht genau muss den übergeordneten namespace, ich könnte tun, was ich brauchte aus dem globalen namespace, aber nicht wissen, wie man dort erhält. Es stellt sich heraus alle Sie tun müssen ist, starten Sie den namespace mit einem umgekehrten Schrägstrich und es wird nicht das verschachteln Verwendung von Namensräumen. Also, wenn Sie in der
Foo\Bar
namespace und rufennew Baz\Bat()
wird es in derFoo\Bar\Baz\Bat()
namespace. Allerdings, wenn Sie anrufennew \Baz\Bat()
wird es in derBaz\Bat()
namespace.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Relative namespaces werden nicht unterstützt. Es gibt eine Anfrage, wenn für Sie:
https://bugs.php.net/bug.php?id=52504
Wenn Sie importieren Sie Ihre Klassen auf den Anfang der Datei sollte es nicht sein, dass große Sache.
use
heißt aliasing - /importieren, die verwendet werden können, in 5 Möglichkeiten: php.net/manual/en/language.namespaces.importing.phpSehen, dass die akzeptierte Antwort ist schon vorhanden. Jedoch, hiermit einen code, den Sie verwenden können, um die Vorteile der relativen namespaces (Hinweis: zögern Sie nicht, benutzen Sie den code unten kostenlos zur Verfügung und Verweis auf den Autor des Codes ist nicht erforderlich, keine Garantien, sofern durch den Autor und die Verwendung der code wird auf eigene Gefahr).
update: - code kann verwendet werden, innerhalb Ihrer Klasse, um dynamisch und schnell laden andere Klassen über relative namespaces. Starter dieses Themas ist auf der Suche nach einer Möglichkeit, zu verlängern Klasse zu einer anderen Klasse über relative namespace, das ist nicht möglich auch nicht mit diesem code.
In Ihrer Klasse nur den folgenden code hinzu:
class child extends ???? { ... }
wo Kind erbt aus dem Namensraum eine Ebene nach oben.