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:

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

Tiedoston /admin/view/page.php luokalle Page aseta nimiavaruudeksi Admin\View:

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

Luodaan luokkiemme oliot:

/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

Oletetaan, että sinulla on hakemisto modules/cart. Tee niin, että kaikki tämän hakemiston luokat kuuluvat nimiavaruuteen Modules\Cart.

Задание 2

Oletetaan, että sinulla on hakemisto modules/shop/cart/. Tee niin, että kaikki tämän hakemiston luokat kuuluvat nimiavaruuteen Modules\Shop\Cart.