Percorsi relativi nei namespace in OOP in PHP

Supponiamo che nel file index.php avvenga la seguente chiamata:

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

Come già sapete, quando si fa riferimento a una classe prima del suo namespace si dovrebbe scrivere una barra rovesciata. In realtà non è obbligatorio. Se questa barra non viene scritta, il namespace chiamato sarà calcolato relativamente al namespace corrente. Guardate l'esempio:

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

Date due classi:

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

Semplificate il codice per l'ereditarietà della classe, tenendo conto del fatto che i namespace delle nostre classi hanno una parte coincidente.

Задание 2

Date due classi:

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

Ecco come vengono creati gli oggetti di queste classi nel file index.php:

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

Semplificate il codice per la creazione degli oggetti, tenendo conto del namespace in cui vengono creati gli oggetti delle nostre classi.