Nimiavaruuksien ala-avaruudet OOH:ssa PHP:ssä
Oletetaan nyt, että meillä on monimutkaisempi tilanne:
ylläpitäjälle on tehtävä kaksi luokkaa Page
- yksi sisältää sivun tiedot ja toinen - näiden tietojen
esitystavan. Oletetaan, että ensimmäinen luokka sijaitsee
tiedostossa /admin/data/page.php ja toinen
- tiedostossa /admin/view/page.php.
Aiempien oppituntien yhteydessä olemme jo päättäneet, että kaikki luokat hakemistosta
admin kuuluvat nimiavaruuteen
Admin. Kuitenkin nyt tässä
samassa nimiavaruudessa meillä on kahden luokan konflikti.
Ongelman ratkaisemiseksi voidaan tehdä lisää
nimiavaruuksien ala-avaruuksia. Esimerkiksi voidaan tehdä
nimiavaruus Admin, ja sen sisälle ala-avaruudet
Data ja View. Tässä tapauksessa
nämä ala-avaruudet kirjoitetaan yksinkertaisesti
kenoviivalla erotettuina - sekä nimiavaruutta määriteltäessä
että luokan olioa luotaessa.
Tässä on syytä tarkentaa, että ala-avaruuksien sisäkkäisyystasoa ei ole rajoitettu (voidaan luoda ala-avaruuksia ala-avaruuksien sisään ja niin edelleen).
Joten, viimeistellään yllä kuvattu
esimerkkimme. Tiedoston /admin/data/page.php luokalle Page
aseta nimiavaruudeksi Admin\Data:
<?php
namespace Admin\Data;
class Page
{
}
?>
Tiedoston /admin/view/page.php luokalle Page
aseta nimiavaruudeksi Admin\View:
<?php
namespace Admin\View;
class Page
{
}
?>
Luodaan luokkiemme oliot:
<?php
require_once '/admin/data/page.php';
require_once '/admin/view/page.php';
$adminDataPage = new \Admin\Data\Page;
$adminViewPage = new \Admin\View\Page;
?>
Oletetaan, että sinulla on hakemisto modules/cart.
Tee niin, että kaikki tämän hakemiston luokat
kuuluvat nimiavaruuteen
Modules\Cart.
Oletetaan, että sinulla on hakemisto modules/shop/cart/.
Tee niin, että kaikki tämän hakemiston luokat
kuuluvat nimiavaruuteen
Modules\Shop\Cart.