Руководство по пространству имен PHP - Полное руководство по PHP 8

YOUTUBE · 28.11.2025 06:59

Ключевые темы и таймкоды

Введение в пространства имён

0:05
  • Функции, константы и классы без пространства имён помещаются в глобальное пространство.
  • Пример с классом транзакций из платёжного шлюза Stripe показывает, что без пространства имён PHP ищет файл в глобальном пространстве.
  • Конфликт имён возникает, когда несколько классов имеют одинаковые имена.

Проблема коллизий имён

1:03
  • Два класса с одинаковыми именами в глобальном пространстве приводят к ошибке.
  • До пространств имён коллизии решались добавлением имени поставщика или пространства имён к имени класса.
  • Аналогичные проблемы возникают с константами и функциями.

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

2:09
  • Пространства имён можно рассматривать как структуры виртуальных каталогов для классов.
  • Пространство имён определяется с помощью ключевого слова `namespace` в верхней части файла.
  • Пример использования пространства имён: `namespace geo`.

Исправление ошибок с пространствами имён

2:43
  • Ошибка «Транзакция класса не найдена» возникает, когда PHP ищет класс в глобальном пространстве.
  • Два способа исправления: добавить пространство имён к имени класса или импортировать класс.
  • Рекомендуется согласовывать пространства имён со структурой папок.

Импорт классов и констант

5:00
  • Импорт классов из пространства имён с помощью ключевого слова `use`.
  • Возможность импорта констант и функций, но это менее распространено.
  • Пример импорта класса `customer_profile` из пространства имён `paddle`.

Работа с локальными классами

6:32
  • PHP пытается загрузить классы из текущего пространства имён.
  • Если класс не найден в текущем пространстве имён, PHP ищет его в глобальном пространстве.
  • Пример ошибки при удалении пространства имён: класс `customer_profile` не найден.

Работа со встроенными классами

7:47
  • Для доступа к встроенным классам PHP в пространстве имён нужно использовать обратную косую черту или импортировать класс.
  • Пример с классом `datetime`: добавление обратной косой черты указывает PHP загрузить класс из глобального пространства.
  • Альтернативный способ — импорт класса с помощью `use datetime`.

Заключение

9:27
  • Использование обратной косой черты или импорта для доступа к встроенным классам PHP.
  • Важность правильного использования пространств имён для избежания конфликтов имён.

Создание объекта класса из другого пространства имён

9:53
  • Попытка создать объект класса `email` из пространства имён `notification` в классе `transaction` приводит к ошибке.
  • Ошибка возникает из-за использования полного имени класса без обратной косой черты.
  • PHP пытается найти класс в текущем пространстве имён, но не находит его.

Исправление ошибки

11:26
  • Два способа исправления: добавить обратную косую черту или импортировать пространство имён.
  • Объяснение различий между неквалифицированным, квалифицированным и полным именами классов.

Работа с функциями

12:01
  • При удалении класса `datetime` из индекса возникает ошибка, так как PHP ищет его в локальном пространстве имён.
  • Встроенная функция `explode` возвращается в глобальное пространство имён, если не найдена в локальном.
  • Использование обратной косой черты для использования встроенной функции из глобального пространства.

Псевдонимы классов

14:36
  • Проблема с использованием двух классов `транзакции` с одинаковыми именами.
  • Решение: использование псевдонимов для одного из классов.
  • Пример использования псевдонимов для работы с длинными именами классов.

Группировка классов

17:33
  • Группировка классов из одного пространства имён с помощью квадратных скобок.
  • Альтернативный способ: импорт пространства имён и добавление префикса к классам.
  • Преимущества использования инструкций `use` для импорта классов.

Псевдонимы для пространств имён

18:59
  • Возможность использования псевдонимов для всего пространства имён.
  • Пример: указание `транзакции pa` и `профиля клиента pa`.
  • Правила импорта зависят от каждого файла, включённые файлы не наследуют импортированные классы.

Заключение и ссылки

19:40
  • Автор оставляет ссылки в описании для дополнительной информации о пространствах имён.
  • Не рассматривает наличие нескольких пространств имён в одном файле, так как это не рекомендуется и не используется широко.