Пространство имён (namespaces)

Пространство имён — механизм, позволяющий избежать конфликт между различными библиотеками.

Пространство имён создаётся через ключевое слово namespace.

# my_project.php
namespace MyProject;

function get_content() {
    return 'Пример текста';
}

Если функция get_content() уже используется на сайте, и был подключён файл выше «my_project.php», то конфликта из-за одинаковых функций не будет, т.к. они находятся в разных пространствах имён.

Вызвать две разные функции get_content() можно через следующий код:

get_content(); // обычный вызов функции
\MyProject\get_content(); // вызов функции из файла «my_project.php»

Чтобы каждый раз не писать пространство имён перед функцией, её можно определить в начале файла.

// пространство имён, которая будет использоваться в текущем файле
namespace MyProject;

// подключение get_content()
include 'my_project.php';

// выполнится \MyProject\get_content();
get_content();

Указывать пространство имён надо в самом начале файла (весь код, в том числе HTML и даже пробелы, должны быть после вызова ключевого слова namespace). Единственное выражение, которое можно использовать до создания пространства имён, это declare().

Вывести текущую пространство имён можно через константу __NAMESPACE__.

По стандапту PSR-4, пространство имён рекомендуется делать по следующей структуре \<Имя производителя>\(<Пространство имён>\)*<Название класса>, например \Symfony\Core\Request.

Пространство имён появилось в PHP 5.3.