Santykiniai keliai vardų erdvėje OOP PHP

Tarkime, faile index.php vyksta toks iškvietimas:

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

Kaip jau žinote, kreipiantis į klasę prieš jos vardų erdvę reikėtų rašyti atvirkštinį pasvirąjį brūkšnį. Tiesą sakant, tai nėra būtina. Jei šio brūkšnio nerašysite, iškviečiamoji vardų erdvė bus skaičiuojama santykinai esamos vardų erdvės atžvilgiu. Žiūrėkite pavyzdį:

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

Duotos dvi klasės:

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

Supaprastinkite paveldėjimo kodą, atsižvelgdami į tai, kad mūsų klasių vardų erdvės turi sutampančią dalį.

Задание 2

Duotos dvi klasės:

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

Štai taip sukuriami šių klasių objektai faile index.php:

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

Supaprastinkite objektų kūrimo kodą, atsižvelgdami į vardų erdvę, kurioje kuriami mūsų klasių objektai.