## Обзор пространств имён

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

Пространства имён, в широком смысле, — способ инкапсуляции элементов. Такое абстрактное понятие встречается часто. Например, в каждой операционной системе директории группируют связанные файлы и выступают в роли пространства имён для находящихся в них файлов. Конкретный пример, разрешается размещать файл `foo.txt` сразу в обоих каталогах: `/home/greg` и `/home/other`, но двум копиям файла `foo.txt` нельзя сосуществовать в одной директории. Кроме сказанного, для доступа к файлу `foo.txt` извне каталога `/home/greg` надо через разделитель добавить перед именем файла имя директории, чтобы получить путь `/home/greg/foo.txt`. Этот же принцип распространяется и на пространства имён в программировании.

В PHP пространства имён решают две проблемы, с которыми сталкиваются авторы библиотек и приложений, когда создают переиспользуемые элементы кода, например классы и функции:

1. Устраняют конфликт имён между кодом разработчика и внутренними или внешними классами, функциями, константами PHP.
2. Создают псевдонимы (или сокращения) для Ну_Очень_Длинных_Имён, чтобы сгладить первую проблему и улучшить читаемость исходного кода.

Пространства имён в PHP помогают группировать логически связанные классы, интерфейсы, функции и константы.

Пример #1 Пример синтаксиса с пространством имён

    <?php

    namespace my\name; // Смотрите раздел «Определение пространств имён»

    class MyClass {}
    function myfunction() {}
    const MYCONST = 1;

    $a = new MyClass;
    print $a::class . "\n";
    $c = new \my\name\MyClass; // Смотрите раздел «Глобальное пространство»
    print $c::class . "\n";

    $a = strlen('hi'); // Смотрите раздел «Пространства имён: возврат
                       // к глобальному пространству для функций и констант»
    print $a . "\n";

    $d = namespace\MYCONST; // Смотрите раздел «Ключевое слово namespace и магическая константа __NAMESPACE__»
    print $d . "\n";
    $d = __NAMESPACE__ . '\MYCONST';
    echo constant($d); // Смотрите раздел «Пространства имён и динамические особенности языка»

> Замечание: Имена пространств имён регистронезависимы.

> Замечание:

> Название пространства имён «`PHP`» и составные названия, которые начинаются с этого слова (например, `PHP\Classes`), зарезервированы для внутренних целей языка, их не нужно писать в пользовательском коде.

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open