Nutzung von Namensräumen
Jede Klasse und Funktion in einem Namensraum kann jederzeit über ihren vollständigen Namen angesprochen werden, z.B. MyProject::DB::Connection oder MyProject::DB::connect.
Beispiel #1 Nutzung vollständiger Namen incl. Namensraum
<?php
require 'MyProject/Db/Connection.php';
$x = new MyProject::DB::Connection;
MyProject::DB::connect();
?>
Namensräume können mit Hilfe des use-Schlüsselwortes in den aktuellen Kontext (entweder den aktuellen oder globalen Namensraum) importiert werden. Die Syntax hierfür ist:
<?php
/* ... */
use Some::Name as Othername;
// Die vereinfachte Form:
use Foo::Bar;
// Diese entpricht:
use Foo::Bar as Bar;
?>
Der importierter Name funktioniert folgendermaßen: jedesmal wenn der Compiler auf den Namen Othername trifft (entweder alleine oder als mit :: abgetrennter Vorspann eines längeren Namens so wird stattdessen der importierte Name Some::Name eingesetzt.
use kann nur im globalen Kontext und nicht innerhalb einer Funktion oder Klasse benutzt werden. Importierte Namen sind von der Stelle des Imports bis zum Ende der Datei aktiv. Um Verwirrungen zu vermeiden wird empfohlen Imports an den Dateianfang zu setzen.
Beispiel #2 Import und Nutzung von Namensräumen
<?php
require 'MyProject/Db/Connection.php';
use MyProject::DB;
use MyProject::DB::Connection as DbConnection;
$x = new MyProject::DB::Connection();
$y = new DB::connection();
$z = new DbConnection();
DB::connect();
?>
Hinweis: Die Importoperation wird nur während des Kompilierens ausgeführt, alle lokalen Namen werden dabei vom Kompiler in ihre vollständigen Entsprechungen umgewandelt. Beachten Sie das Namen innerhalb von Strings nicht umgewandelt werden, Callback-Aufrufe können sich daher nicht auf Importregeln verlassen.
Nutzung von Namensräumen
