Alias di classe per i namespace nella OOP in PHP

Supponiamo di avere due classi Data, appartenenti a namespace diversi. Supponiamo che in una certa classe ci servano oggetti di entrambe queste classi:

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

Supponiamo di aver deciso di semplificare le chiamate alle classi tramite il comando use. In questo caso ci aspettava un problema: entrambe le classi hanno il nome Data, ciò significa che avremo un conflitto di nomi:

/project/test.php<?php
  namespace Project;
  
  // Ci sarà un conflitto di nomi:
  use \Core\Users\Data; // connettiamo la prima classe
  use \Core\Admin\Data; // connettiamo la seconda classe
  
  class Test
  {
    public function __construct()
    {
      $data1 = new Data;
      $data2 = new Data;
    }
  }
?>

Per risolvere questo problema esiste un comando speciale as, che permette di assegnare alla classe connessa un alias - un nome con cui questa classe sarà accessibile in questo file. Diamo un nuovo nome alle nostre classi 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

Semplificate il seguente codice utilizzando use:

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

Semplificate il seguente codice utilizzando use:

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