Relativni putanje u prostorima imena u OOP u PHP-u

Neka se u fajlu index.php odvija sljedeći poziv:

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

Kao što već znate, prilikom pozivanja klase ispred njegovog prostora imena treba pisati obrnutu kosu crtu. Zapravo, ovo nije obavezno. Ako se ta kosa crta ne napiše, tada će se pozvani prostor imena računati relativno u odnosu na trenutni prostor. Pogledajte primer:

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

Data su dva klasa:

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

Pojednostavite kod za nasleđivanje klase, uzimajući u obzir to da prostori imena naših klasa imaju podudarajući deo.

Задание 2

Data su dva klasa:

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

Ovako se kreiraju objekti ovih klasa u fajlu index.php:

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

Pojednostavite kod za kreiranje objekata, uzimajući u obzir prostor imena u kome se kreiraju objekti naših klasa.