На имена классов и функций, объявленых внутри пространства
имён всегда можно сослаться по полному имени:
MyProject::DB::Connection или
MyProject::DB::connect .
Пример #1 Использование имён, объявленных внутри пространств имён
<?php require 'MyProject/Db/Connection.php'; $x = new MyProject::DB::Connection; MyProject::DB::connect(); ?>
Пространства имён могут быть импортированы в текущий контекст
(глобальный или пространство имён) при помощи оператора
use. Синтаксис оператора use:
<?php /* ... */ use Some::Name as Othername;
// Самая простая форма : use Foo::Bar; // это то же что и : use Foo::Bar as Bar; ?>
Импортированные пространства имён работают следующим образом:
каждый раз, когда компилятор встречает локальное имя
Othername (как простое имя или как префикс
более длинного, разделенного :: имени),
импортированное имя Some::Name заменяется.
Оператор use может быть использован только в
глобальном пространстве имён - не внутри класса или функции.
Импортированные имена действуют с точки импортирования до конца текущего файла.
Рекомендуется импортировать имена в начале файла во избежание путаницы.
Пример #2 Импортирование пространств имён и доступ к ним
<?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(); ?>
Замечание:
Операция импорта пространств имён выполняется только во время компиляции.
Все локальные имена заменяются компилятором на их полные эквиваленты.
Заметьте, что это не переводит имена в строки. Таким образом динамический
импорт пространств имён невозможен.