⊗ppOpNsSN 97 of 107 menu

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:

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

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

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

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

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

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.

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.

ptuzlhiswbn