Определение пространств имён
(PHP 5 >= 5.3.0, PHP 7, PHP 8)
Хотя любой корректный PHP-код разрешается размещать внутри пространства имён, только
классы (включая абстрактные классы, трейты и перечисления), интерфейсы, функции и константы зависят от пространства имён.
Пространства имён объявляют зарезервированным словом namespace,
за которым идёт название пространства имён.
Пространства имён объявляют в начале файла. Другому коду нельзя идти
перед объявлением пространства имён, за исключением зарезервированного слова
declare.
Пример #1 Объявление единого пространства имён
<?php
namespace MyProject;
const CONNECT_OK = 1;
class Connection { /* ... */ }
function connect() { /* ... */ }
Замечание:
Абсолютные имена, — которые начинаются с обратной косой черты, —
нельзя включать в объявления пространств имён,
поскольку языковые конструкции с начальным слешем интерпретируются
как выражения относительных пространств имён.
Перед объявлением пространства имён разрешается указывать только инструкцию
declare, чтобы, например, определить кодировку исходного файла. В дополнение,
никакой код, кроме PHP-кода, нельзя размещать перед объявлением пространства имён, включая лишние пробелы:
Пример #2 Объявление пространства имён
<html>
<?php
namespace MyProject; // Фатальная ошибка, поскольку объявление пространства имён идёт не первой инструкцией в скрипте
В отличие от остальных PHP-конструкций, разрешается определение одного и того же
пространства имён в двух или больше файлах для распределения
содержания пространства имён по файловой системе.