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:
<?php
namespace Admin\Data;
class Page
{
}
?>
Pre triedu Page zo súboru /admin/view/page.php
zadáme priestor názvov Admin\View:
<?php
namespace Admin\View;
class Page
{
}
?>
Vytvorme objekty našich tried:
<?php
require_once '/admin/data/page.php';
require_once '/admin/view/page.php';
$adminDataPage = new \Admin\Data\Page;
$adminViewPage = new \Admin\View\Page;
?>
Nech máte priečinok modules/cart.
Zaistite, aby všetky triedy z tohto priečinka
patrili do priestoru názvov
Modules\Cart.
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.