Подпростори имена у ООП у PHP

Нека сада имамо сложенију ситуацију: за администратора треба направити две класе Page – једна са подацима странице, а друга – са приказом тих података. Нека се прва класа налази у фајлу /admin/data/page.php, а друга – у фајлу /admin/view/page.php.

У претходним лекцијама већ смо одлучили да све класе из фасцикле admin припадају простору имена Admin. Међутим, сада у овом истом простору имамо сукоб две класе. За решавање проблема можемо направити додатне подпросторе имена. На пример, можемо направити простор имена Admin, а у њему подпросторе Data и View. У том случају имена ових подпростора једноставно се запишу кроз обрнуту косу црту – како при задавању простора имена, тако и при креирању објекта класе.

Овде треба прецизирати да ниво угнежђења подпростора није ограничен (могуће је креирати под подпросторе у подпросторима и тако даље).

Дакле, довршимо наш горе описани пример. За класу Page из фајла /admin/data/page.php наведемо простор имена Admin\Data:

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

За класу Page из фајла /admin/view/page.php наведемо простор имена Admin\View:

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

Креирајмо објекте наших класа:

/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

Нека имате фасциклу modules/cart. Учините да све класе из ове фасцикле припадају простору имена Modules\Cart.

Задание 2

Нека имате фасциклу modules/shop/cart/. Учините да све класе из ове фасцикле припадају простору имена Modules\Shop\Cart.