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.