Namespaces overview
Оновлено: 12.05.2023
(PHP 5 >= 5.3.0, PHP 7, PHP 8)
Що таке простори імен? У найширшому розумінні простори імен - це спосіб інкапсуляції об'єктів. У багатьох місцях це поняття можна розглядати як абстрактну концепцію. Наприклад, у будь-якій операційній системі каталоги слугують для групування пов'язаних файлів і виступають простором імен для файлів у них. Як конкретний приклад, файл foo.txt може існувати як в каталозі /home/greg, так і в /home/other, але дві копії foo.txt не можуть співіснувати в одному каталозі. Крім того, щоб отримати доступ до файлу foo.txt за межами каталогу /home/greg, ми повинні додати ім'я каталогу до імені файлу за допомогою роздільника каталогів, щоб отримати /home/greg/foo.txt. Цей самий принцип поширюється на простори імен у світі програмування.
У світі PHP простори імен призначені для вирішення двох проблем, з якими стикаються автори бібліотек і додатків при створенні повторно використовуваних елементів коду, таких як класи або функції:
Іменні колізії між кодом, який ви створюєте, і внутрішніми класами/функціями/константами PHP або сторонніми класами/функціями/константами. Можливість псевдонімізувати (або скорочувати) Extra_Long_Names покликана полегшити першу проблему, покращуючи читабельність вихідного коду.
Простори імен PHP забезпечують спосіб групування пов'язаних класів, інтерфейсів, функцій і констант. Ось приклад синтаксису простору імен у PHP:
Приклад #1 Приклад синтаксису простору імен
<?php
namespace my\name; // see "Defining Namespaces" section
class MyClass {}
function myfunction() {}
const MYCONST = 1;
$a = new MyClass;
$c = new \my\name\MyClass; // see "Global Space" section
$a = strlen('hi'); // see "Using namespaces: fallback to global
// function/constant" section
$d = namespace\MYCONST; // see "namespace operator and __NAMESPACE__
// constant" section
$d = __NAMESPACE__ . '\MYCONST';
echo constant($d); // see "Namespaces and dynamic language features" section
?>
Примітка: Імена просторів імен не залежать від регістру.
Зауважте:
Ім'я простору імен PHP і складені імена, що починаються з цього імені (наприклад, PHP\Classes), зарезервовані для внутрішнього використання і не повинні використовуватися у коді користувацького простору.