PHPのOOPにおける名前空間の相対パス

ファイル 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

次の2つのクラスがあります:

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

両方のクラスの名前空間に共通する部分があることを考慮し、 クラス継承のコードを簡略化してください。

Задание 2

次の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;
?>

オブジェクトが作成される名前空間を考慮し、 オブジェクト作成のコードを簡略化してください。