Пространство имён (namespaces)
Пространство имён — механизм, позволяющий избежать конфликт между различными библиотеками.
Пространство имён создаётся через ключевое слово namespace
.
# my_project.php namespace MyProject; class User {}
Теперь чтобы вызвать объект выше, надо использовать пространство имён.
$user = new \MyProject\User();
Если в двух библиотеках используется одно и тоже имя для объекта, то ошибки не будет, т.к. объекты находятся в разных пространствах имён.
// класс User из библиотеки MyProject $user = new \MyProject\User(); // класс User из библиотеки OtherProject $user_other = new \OtherProject\User();
Указывать пространство имён надо в самом начале файла (весь код, в том числе HTML и даже пробелы, должны быть после вызова ключевого слова namespace
). Единственное выражение, которое можно использовать до создания пространства имён, это declare()
.
Пространство имён по умолчанию
Чтобы каждый раз не писать пространство имён, её можно определить в начале файла.
// пространство имён, которая будет использоваться в текущем файле namespace MyProject; // выполнится \MyProject\User(); $user = new User();
Если в текущем файле надо использовать два объекта без указания пространства имён, то для этого можно использовать ключевое слово use
.
use MyProject\User as User; use OtherProject\User as UserOther; // выполнится \MyProject\User(); $user = new User(); // выполнится \OtherProject\User(); $user = new UserOther();
По стандарту PSR-4, пространство имён рекомендуется делать по следующей структуре \<Имя производителя>\(<Пространство имён>\)*<Название класса>
, например \Symfony\Core\Request
.
Также по стандарту PSR-4 структура файлов должна совпадать с пространством имён, включая регистр имени файлов. Например, для \Symfony\Core\Request структура файлов должна выглядеть как Symfony/Core/Request.php.
Вывести текущую пространство имён можно через константу __NAMESPACE__
.
Пространство имён появилось в PHP 5.3.
Поддержать автора