Podprostori imena u OOP-u u PHP

Neka sada imamo složeniju situaciju: za administratora treba napraviti dve klase Page - jednu sa podacima strane, a drugu - sa prikazom tih podataka. Neka se prva klasa nalazi u fajlu /admin/data/page.php, a druga - u fajlu /admin/view/page.php.

U prethodnim lekcijama već smo rešili da će sve klase iz fascikle admin pripadati prostoru imena Admin. Međutim, sada u ovom istom prostoru imamo konflikt dve klase. Za rešavanje problema mogu se napraviti dodatni podprostori imena. Na primer, može se napraviti prostor imena Admin, a u njemu podprostori Data i View. U takvom slučaju imena ovih podprostora se jednostavno pišu putem obrnute kose crte - kako pri zadavanju prostora imena, tako i pri kreiranju objekta klase.

Ovde treba napomenuti da nivo ugnježdenosti podprostora nije ograničen (mogu se praviti pod-podprostori u podprostorima i tako dalje).

Dakle, hajde da dovršimo naš gore opisan primer. Za klasu Page iz fajla /admin/data/page.php odredimo prostor imena Admin\Data:

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

Za klasu Page iz fajla /admin/view/page.php odredimo prostor imena Admin\View:

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

Napravimo objekte naših klasa:

/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

Neka imate fasciklu modules/cart. Uredite tako da sve klase iz ove fascikle pripadaju prostoru imena Modules\Cart.

Задание 2

Neka imate fasciklu modules/shop/cart/. Uredite tako da sve klase iz ove fascikle pripadaju prostoru imena Modules\Shop\Cart.