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