Определение пространств имён
(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-конструкций, разрешается определять одно
и то же пространство имён в наборе файлов, чтобы распределить
содержание пространства имён по файловой системе.