Namnrymdsunderutrymmen i OOP i PHP

Låt oss nu anta att vi har en mer komplex situation: för administratören behöver vi skapa två klasser Page - en med sidans data, och den andra - med presentationen av dessa data. Låt den första klassen finnas i filen /admin/data/page.php, och den andra - i filen /admin/view/page.php.

I tidigare lektioner har vi redan kommit fram till att alla klasser från mappen admin kommer att tillhöra namnrymden Admin. Men nu har vi i den här samma namnrymd en konflikt mellan två klasser. För att lösa problemet kan vi skapa ytterligare namnrymdsunderutrymmen. Till exempel kan vi skapa namnrymden Admin, och i den underutrymmena Data och View. I så fall skrivs namnen på dessa underutrymmen helt enkelt med omvänt snedstreck - både när namnrymden anges och när ett objekt av klassen skapas.

Här bör det preciseras att nestningsnivån för underutrymmen inte är begränsad (man kan skapa under-underutrymmen i underutrymmen och så vidare).

Så, låt oss färdigställa vårt ovan beskrivna exempel. För klassen Page från filen /admin/data/page.php anger vi namnrymden Admin\Data:

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

För klassen Page från filen /admin/view/page.php anger vi namnrymden Admin\View:

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

Låt oss skapa objekt av våra 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 att du har mappen modules/cart. Gör så att alla klasser från denna mapp tillhör namnrymden Modules\Cart.

Задание 2

Antag att du har mappen modules/shop/cart/. Gör så att alla klasser från denna mapp tillhör namnrymden Modules\Shop\Cart.