Vardų erdvių pakopos OOP PHP

Tarkime, dabar turime sudėtingesnę situaciją: administrui reikia sukurti dvi klases Page - vieną su puslapio duomenimis, o antrą - su šių duomenų atvaizdavimu. Tarkime, pirmoji klasė yra faile /admin/data/page.php, o antroji - faile /admin/view/page.php.

Ankstesnėse pamokose jau nusprendėme, kad visos klasės iš aplanko admin priklausys vardų erdvei Admin. Tačiau dabar šioje pačioje erdvėje turime dviejų klasių konfliktą. Problemai spręsti galima sukurti papildomas vardų erdvių pakopas. Pavyzdžiui, galima sukurti vardų erdvę Admin, o joje pakopas Data ir View. Tokiu atveju šių pakopų pavadinimai tiesiog rašomi per atvirkštinį pasvirąjį brūkšnį - tiek nustatant vardų erdvę, tiek kuriant klasės objektą.

Čia reikia patikslinti, kad pakopų įdėjimo lygis neribojamas (galima kurti pakopas pakopose ir taip toliau).

Taigi, užbaigkime mūsų aukščiau aprašytą pavyzdį. Klasei Page iš failo /admin/data/page.php nurodykime vardų erdvę Admin\Data:

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

Klasei Page iš failo /admin/view/page.php nurodykime vardų erdvę Admin\View:

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

Sukurkime mūsų klasių objektus:

/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

Tarkime, jūs turite aplanką modules/cart. Padarykite taip, kad visos klasės iš šio aplanko priklausytų vardų erdvei Modules\Cart.

Задание 2

Tarkime, jūs turite aplanką modules/shop/cart/. Padarykite taip, kad visos klasės iš šio aplanko priklausytų vardų erdvei Modules\Shop\Cart.