Navnerom i OOP i PHP

La oss nå anta at vi har en mer kompleks situasjon: for admin må vi lage to klasser Page - en med sidens data, og den andre - med presentasjonen av disse dataene. La den første klassen være i filen /admin/data/page.php, og den andre - i filen /admin/view/page.php.

I tidligere leksjoner har vi allerede bestemt at alle klasser fra mappen admin vil tilhøre navnerommet Admin. Men nå har vi i dette samme navnerommet en konflikt mellom to klasser. For å løse problemet kan vi lage ytterligere undernavnerom. For eksempel kan vi lage navnerommet Admin, og i det undernavnerommene Data og View. I så fall skrives navnene på disse undernavnerommene enkelt med omvendt skråstrek - både ved angivelse av navnerom og ved opprettelse av objekt av klassen.

Her bør det presiseres at nestingsnivået for undernavnerom ikke er begrenset (man kan lage under-under-navnerom i undernavnerom og så videre).

Så la oss fullføre vårt ovennevnte eksempel. For klassen Page fra filen /admin/data/page.php angi navnerommet Admin\Data:

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

For klassen Page fra filen /admin/view/page.php angi navnerommet Admin\View:

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

La oss opprette objekter av våre klasser:

/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

Anta at du har mappen modules/cart. Gjør slik at alle klasser fra denne mappen tilhører navnerommet Modules\Cart.

Задание 2

Anta at du har mappen modules/shop/cart/. Gjør slik at alle klasser fra denne mappen tilhører navnerommet Modules\Shop\Cart.