Определение пространств имен

(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// fatal error - объявление пространства имен должно быть первым выражением в скрипте
?>

Кроме того, в отличие от любой другой конструкции PHP, одно и то же пространство имен можно определять в нескольких файлах, что позволяет распределять их содержимое по файловой системе.