Ψευδώνυμα Κλάσεων για Χώρους Ονομάτων στην Αντικειμενοστραφή Προγραμματισμό στην PHP

Ας υποθέσουμε ότι έχουμε δύο κλάσεις Data, που ανήκουν σε διαφορετικούς χώρους ονομάτων. Ας υποθέσουμε ότι σε κάποια κλάση χρειαζόμαστε αντικείμενα και από τις δύο αυτές κλάσεις:

/project/test.php<?php
  namespace Project;
  
  class Test
  {
    public function __construct()
    {
      $data1 = new \Core\Users\Data; // δημιουργούμε αντικείμενο
      $data2 = new \Core\Admin\Data; // δημιουργούμε αντικείμενο
    }
  }
?>

Ας υποθέσουμε ότι αποφασίσαμε να απλοποιήσουμε τις κλήσεις των κλάσεων μέσω της εντολής use. Σε αυτή την περίπτωση μας περιμένει ένα πρόβλημα: και οι δύο κλάσεις έχουν το όνομα Data, και αυτό σημαίνει ότι θα έχουμε σύγκρουση ονομάτων:

/project/test.php<?php
  namespace Project;
  
  // Θα υπάρξει σύγκρουση ονομάτων:
  use \Core\Users\Data; // συνδέουμε την πρώτη κλάση
  use \Core\Admin\Data; // συνδέουμε τη δεύτερη κλάση
  
  class Test
  {
    public function __construct()
    {
      $data1 = new Data;
      $data2 = new Data;
    }
  }
?>

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

/project/test.php<?php
  namespace Project;
  use \Core\Users\Data as UsersData;
  use \Core\Admin\Data as AdminData;
  
  class Test
  {
    public function __construct()
    {
      $data1 = new UsersData;
      $data2 = new AdminData;
    }
  }
?>
Задание 1

Απλοποιήστε τον ακόλουθο κώδικα χρησιμοποιώντας την use:

php<?php
  namespace Project;
  
  class Test
  {
    public function __construct()
    {
      $pageController  = new \Resource\Controller\Page;
      $pageModel       = new \Resource\Model\Page;
    }
  }
?>
Задание 2

Απλοποιήστε τον ακόλουθο κώδικα χρησιμοποιώντας την use:

php<?php
  namespace Project\Data;
  
  class Test
  {
    public function __construct()
    {
      $pageController  = new \Project\Data\Controller\Page;
      $pageModel       = new \Project\Data\Model\Page;
    }
  }
?>