Rrugët relative në hapësirat e emrave në OOP në PHP

Le të themi në skedarin index.php ndodh thirrja e mëposhtme:

index.php<?php
  namespace Admin\Data;
  
  new \Core\Controller;
?>

Siç e dini tashmë, kur i referoheni një klase përpara hapësirës së emrit të saj duhet të shkruhet backslash. Në fakt kjo nuk është e detyrueshme. Nëse ky backslash nuk shkruhet, atëherë hapësira e emrave që thirret do të llogaritet në lidhje me hapësirën aktuale të emrave. Shihni shembullin:

index.php<?php
  namespace Admin\Data;
  
  new Core\Controller; // ekuivalente me \Admin\Data\Core\Controller
?>
Задание 1

Janë dhënë dy klasa:

php<?php
  namespace Modules\Shop\Core;
  
  class Cart
  {
    
  }
?>
php<?php
  namespace Modules\Shop;
  
  class UserCart extends \Modules\Shop\Core\Cart
  {
    
  }
?>

Thjeshtoni kodin për trashëgiminimin e klasës, duke marrë parasysh që hapësirat e emrave të klasave tona kanë pjesë që përputhen.

Задание 2

Janë dhënë dy klasa:

php<?php
  namespace Core\Data;
  
  class Controller
  {
    
  }
?>
php<?php
  namespace Core\Data;
  
  class Model
  {
    
  }
?>

Kështu krijohen objektet e këtyre klasave në skedarin index.php:

index.php<?php
  namespace Core\Data;
  
  $controller = new \Core\Data\Controller;
  $model      = new \Core\Data\Model;
?>

Thjeshtoni kodin për krijimin e objekteve, duke marrë parasysh hapësirën e emrave në të cilën krijohen objektet e klasave tona.