Podpriestory názvov v OOP v PHP

Nech teraz máme zložitejšiu situáciu: pre admina je potrebné vytvoriť dve triedy Page - jednu s údajmi stránky a druhú - s reprezentáciou týchto údajov. Nech sa prvá trieda nachádza v súbore /admin/data/page.php, a druhá - v súbore /admin/view/page.php.

V predchádzajúcich lekciách sme sa už dohodli, že všetky triedy z priečinka admin budú patriť do priestoru názvov Admin. Avšak, teraz v tomto samom priestore máme konflikt dvoch tried. Na vyriešenie problému je možné vytvoriť dodatočné podpriestory názvov. Napríklad, je možné vytvoriť priestor názvov Admin, a v ňom podpriestory Data a View. V takom prípade sa názvy týchto podpriestorov jednoducho zapisujú cez spätné lomítko - ako pri zadávaní priestoru názvov, tak aj pri vytváraní objektu triedy.

Tu je potrebné upresniť, že úroveň vnorenia podpriestorov nie je obmedzená (možno vytvárať podpodpriestory v podpriestoroch a tak ďalej).

Takže, dokončime náš vyššie opísaný príklad. Pre triedu Page zo súboru /admin/data/page.php zadáme priestor názvov Admin\Data:

/admin/data/page.php<?php
  namespace Admin\Data;
  
  class Page
  {
    
  }
?>

Pre triedu Page zo súboru /admin/view/page.php zadáme priestor názvov Admin\View:

/admin/view/page.php<?php
  namespace Admin\View;
  
  class Page
  {
    
  }
?>

Vytvorme objekty našich tried:

/index.php<?php
  require_once '/admin/data/page.php';
  require_once '/admin/view/page.php';
  
  $adminDataPage = new \Admin\Data\Page;
  $adminViewPage = new \Admin\View\Page;
?>
Задание 1

Nech máte priečinok modules/cart. Zaistite, aby všetky triedy z tohto priečinka patrili do priestoru názvov Modules\Cart.

Задание 2

Nech máte priečinok modules/shop/cart/. Zaistite, aby všetky triedy z tohto priečinka patrili do priestoru názvov Modules\Shop\Cart.