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