Relatieve paden in naamruimten in OOP in PHP

Stel dat in het bestand index.php de volgende aanroep plaatsvindt:

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

Zoals je al weet, moet bij het benaderen van een klasse voor de naamruimte een backslash worden geschreven. Eigenlijk is dit niet verplicht. Als deze slash niet wordt geschreven, dan wordt de aangeroepen naamruimte berekend relatief ten opzichte van de huidige naamruimte. Zie voorbeeld:

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

Er zijn twee klassen gegeven:

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

Vereenvoudig de code voor overerving van de klasse, rekening houdend met het feit dat de naamruimten van onze klassen een overlappend deel hebben.

Задание 2

Er zijn twee klassen gegeven:

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

Zo worden objecten van deze klassen gemaakt in het bestand index.php:

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

Vereenvoudig de code voor het maken van objecten, rekening houdend met de naamruimte waarin objecten van onze klassen worden gemaakt.