Pseudonimi klasa za imenske prostore u OOP-u u PHP-u

Neka imamo dve klase Data, koje pripadaju različitim imenskim prostorima. Neka u nekoj klasi trebaju objekti obe ove klase:

/project/test.php<?php
  namespace Project;
  
  class Test
  {
    public function __construct()
    {
      $data1 = new \Core\Users\Data; // kreiramo objekat
      $data2 = new \Core\Admin\Data; // kreiramo objekat
    }
  }
?>

Neka smo odlučili da pojednostavimo pozive klasa preko naredbe use. U ovom slučaju nas čeka problem: obe klase imaju ime Data, a to znači da ćemo imati konflikt imena:

/project/test.php<?php
  namespace Project;
  
  // Biće konflikt imena:
  use \Core\Users\Data; // povezujemo prvu klasu
  use \Core\Admin\Data; // povezujemo drugu klasu
  
  class Test
  {
    public function __construct()
    {
      $data1 = new Data;
      $data2 = new Data;
    }
  }
?>

Za rešavanje ovog problema postoji posebna naredba as, koja omogućava da se povezanoj klasi dodeli pseudonim - ime pod kojim će ova klasa biti dostupna u ovom fajlu. Hajde da izvršimo preimenovanje naših klasa 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

Pojednostavite sledeći kod koristeći use:

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

Pojednostavite sledeći kod koristeći use:

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