Namespaces i OOP i PHP

Lad os nu antage, at vi har en mere kompleks situation: for administratoren skal der laves to klasser Page - en med sidens data, og den anden - med præsentationen af disse data. Lad den første klasse være placeret i filen /admin/data/page.php, og den anden - i filen /admin/view/page.php.

I de foregående lektioner har vi allerede besluttet, at alle klasser fra mappen admin vil tilhøre namespacet Admin. Men nu har vi i dette samme namespace en konflikt mellem to klasser. For at løse problemet kan der laves yderligere undernamespaces. For eksempel kan der laves namespacet Admin, og i det undernamespacet Data og View. I sådant tilfælde skrives navnene på disse undernamespaces blot gennem omvendt skråstreg - både ved angivelse af namespace og ved oprettelse af et klasseobjekt.

Her bør det præciseres, at indlejringsniveauet af undernamespaces ikke er begrænset (man kan oprette under-undernamespaces i undernamespaces og så videre).

Så lad os færdiggøre vores ovennævnte eksempel. For klassen Page fra filen /admin/data/page.php angiver vi namespacet Admin\Data:

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

For klassen Page fra filen /admin/view/page.php angiver vi namespacet Admin\View:

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

Lad os oprette objekter af vores 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

Antag, at du har mappen modules/cart. Sørg for, at alle klasser fra denne mappe tilhører namespacet Modules\Cart.

Задание 2

Antag, at du har mappen modules/shop/cart/. Sørg for, at alle klasser fra denne mappe tilhører namespacet Modules\Shop\Cart.