Nënhapësirat e Emrave në OOP në PHP

Le të themi tani që kemi një situatë më të ndërlikuar: për administratorin duhen bërë dy klasa Page - një me të dhënat e faqes, dhe e dyta - me paraqitjen e këtyre të dhënave. Le të themi që klasa e parë ndodhet në skedarin /admin/data/page.php, dhe e dyta - në skedarin /admin/view/page.php.

Në mësimet e mëparshme kemi vendosur tashmë, që të gjitha klasat nga dosja admin do t'i përkasin hapësirës së emrave Admin. Megjithatë, tani në këtë të njëjtën hapësirë kemi një konflikt midis dy klasave. Për të zgjidhur problemin mund të bëhen nënhapësira shtesë të emrave. Për shembull, mund të bëhet hapësira e emrave Admin, dhe brenda saj nënhapësirat Data dhe View. Në këtë rast emrat e këtyre nënhapësirave thjesht shkruhen përmes së prapthi - si gjatë caktimit të hapësirës së emrave, ashtu edhe gjatë krijimit të objektit të klasës.

Këtu duhet sqaruar se niveli i folezimit i nënhapësirave nuk është i kufizuar (mund të krijohen nën nënhapësira brenda nënhapësirave dhe kështu me radhë).

Pra, le të përfundojmë shembullin tonë të përshkruar më lart. Për klasën Page nga skedari /admin/data/page.php le të caktojmë hapësirën e emrave Admin\Data:

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

Për klasën Page nga skedari /admin/view/page.php le të caktojmë hapësirën e emrave Admin\View:

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

Le të krijojmë objektet e klasave tona:

/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

Le të themi që keni dosjen modules/cart. Bëni që të gjitha klasat nga kjo dosje t'i përkasin hapësirës së emrave Modules\Cart.

Задание 2

Le të themi që keni dosjen modules/shop/cart/. Bëni që të gjitha klasat nga kjo dosje t'i përkasin hapësirës së emrave Modules\Shop\Cart.