Jmenné prostory v OOP v PHP

Nyní mějme složitější situaci: pro administrátora potřebujeme vytvořit dvě třídy Page - jednu s daty stránky a druhou - s reprezentací těchto dat. Nechť první třída je umístěna v souboru /admin/data/page.php a druhá - v souboru /admin/view/page.php.

V předchozích lekcích jsme již rozhodli, že všechny třídy ze složky admin budou patřit do jmenného prostoru Admin. Nyní však v tomto stejném prostoru máme konflikt dvou tříd. K vyřešení problému lze vytvořit další podprostory jmen. Například lze vytvořit jmenný prostor Admin a v něm podprostory Data a View. V takovém případě se jména těchto podprostorů jednoduše zapisují pomocí zpětného lomítka - jak při zadávání jmenného prostoru, tak při vytváření objektu třídy.

Zde je třeba upřesnit, že úroveň vnoření podprostorů není omezena (lze vytvářet podpodprostory v podprostorech a tak dále).

Pojďme tedy dokončit náš výše popsaný příklad. Pro třídu Page ze souboru /admin/data/page.php nastavme jmenný prostor Admin\Data:

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

Pro třídu Page ze souboru /admin/view/page.php nastavme jmenný prostor Admin\View:

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

Vytvořme objekty našich tříd:

/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

Předpokládejme, že máte složku modules/cart. Zařiďte, aby všechny třídy z této složky patřily do jmenného prostoru Modules\Cart.

Задание 2

Předpokládejme, že máte složku modules/shop/cart/. Zařiďte, aby všechny třídy z této složky patřily do jmenného prostoru Modules\Shop\Cart.