Стажировка на реальных проектах:
наполнение портфолио, помощь с работой и заказами, пробные собеседования. Жми для подробностей→
⊗ppOpNsSN 97 of 107 menu
Вступайте в телеграмм-канал сайта code.mu: новинки, статьи, интервью, задачи, бесплатные курсы и тренинги. Жми для вступления:)

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

Пусть теперь у нас есть более сложная ситуация: для админа нужно сделать два класса Page - один с данными страницы, а второй - с представлением этих данных. Пусть первый класс находится в файле /admin/data/page.php, а второй - в файле /admin/view/page.php.

В предыдущих уроках мы уже решили, что все классы из папки admin будут относится к пространству имен Admin. Однако, теперь в этом самом пространстве у нас конфликт двух классов. Для решения проблемы можно сделать дополнительные подпространства имен. Например, можно сделать пространство имен Admin, а в нем подпространства Data и View. В таком случае имена этих подпространств просто записываются через обратный слеш - как при задании пространства имен, так и при создании объекта класса.

Здесь следует уточнить, что уровень вложенности подпространств не ограничен (можно создавать под под пространства в подпространствах и так далее).

Итак, давайте доделаем наш описанный выше пример. Для класса Page из файла /admin/data/page.php укажем пространство имен Admin\Data:

<?php namespace Admin\Data; class Page { } ?>

Для класса Page из файла /admin/view/page.php укажем пространство имен Admin\View:

<?php namespace Admin\View; class Page { } ?>

Создадим объекты наших классов:

<?php require_once '/admin/data/page.php'; require_once '/admin/view/page.php'; $adminDataPage = new \Admin\Data\Page; $adminViewPage = new \Admin\View\Page; ?>

Пусть у вас есть папка modules/cart. Сделайте так, чтобы все классы из этой папки относились к пространству имен Modules\Cart.

Пусть у вас есть папка modules/shop/cart/. Сделайте так, чтобы все классы из этой папки относились к пространству имен Modules\Shop\Cart.

azbydeenesfrkakkptruuz