Новости | Документация | Download | Webboard | FAQ | Поиск | Контакты


Использование пространств имён

На имена классов и функций, объявленых внутри пространства имён всегда можно сослаться по полному имени: 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();
     
?>

Замечание: Операция импорта пространств имён выполняется только во время компиляции. Все локальные имена заменяются компилятором на их полные эквиваленты. Заметьте, что это не переводит имена в строки. Таким образом динамический импорт пространств имён невозможен.






  Copyright Apache.ru © 1999-2017, All Rights Reserved Разработка сайта: Inside.ru  
  РЕКЛАМА НА САЙТЕ: |