Σχετικές διαδρομές στον χώρο ονομάτων στην OOP στην 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;
?>

Απλοποιήστε τον κώδικα για τη δημιουργία αντικειμένων, λαμβάνοντας υπόψη τον χώρο ονομάτων, στο οποίο δημιουργούνται τα αντικείμενα των κλάσεων μας.