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

(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;
$c = new \my\name\MyClass; // Смотрите раздел «Глобальное пространство»

$a = strlen('hi'); // Смотрите раздел «Пространства имён: возврат

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

Замечание:

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

To Top