Относителни пътища в именните пространства в ООП в PHP

Нека във файла index.php се извършва следното извикване:

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

Както вече знаете, при достъп до клас преди неговото име на пространство от имена трябва да се пише обратна наклонена черта. Всъщност това не е задължително. Ако тази наклонена черта не се напише, извиканото именно пространство ще бъде изчислено относително спрямо текущото пространство от имена. Вижте пример:

index.php<?php
  namespace Admin\Data;
  
  new Core\Controller; // еквивалентно на \Admin\Data\Core\Controller
?>
Задание 1

Дадени са два класа:

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

Опростете кода за наследяване на клас, като вземете предвид, че именните пространства на нашите класове имат съвпадаща част.

Задание 2

Дадени са два класа:

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

Така се създават обекти от тези класове във файла index.php:

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

Опростете кода за създаване на обекти, като вземете предвид именното пространство, в което се създават обекти от нашите класове.