O comando use e namespaces em OOP no PHP

Suponha que temos a seguinte classe Data:

/core/admin/data.php<?php
  namespace \Core\Admin;
  
  class Data
  {
    public function __construct($num)
    {
      
    }
  }
?>

Suponha também que existe uma classe Page, criando dentro de si objetos da classe Data:

/users/page.php<?php
  namespace Users;
  
  class Page
  {
    public function __construct()
    {
      $data1 = new \Core\Admin\Data('1');
      $data2 = new \Core\Admin\Data('2');
    }
  }
?>

Como você pode ver, ambas as nossas classes estão em namespaces completamente diferentes, portanto as chamadas para a classe Data não podem ser simplificadas, da mesma forma que fizemos na lição anterior. Essas chamadas, no entanto, são muito longas e inconvenientes, pois em cada chamada da classe Data é necessário especificar seu longo namespace.

Para resolver esse tipo de problema, existe um comando especial use. Com este comando, basta conectar a classe uma vez pelo seu nome completo, e depois disso será possível acessar essa classe simplesmente pelo nome da classe. Veja o exemplo:

/users/page.php<?php
  namespace Users;
  use \Core\Admin\Data; // conectamos a classe
  
  class Page extends Controller
  {
    public function __construct()
    {
      $data1 = new Data('1'); // chamamos simplesmente pelo nome
      $data2 = new Data('2'); // chamamos simplesmente pelo nome
    }
  }
?>
Задание 1

Simplifique o seguinte código usando use:

php<?php
  namespace Project;
  
  class Test
  {
    public function __construct()
    {
      // Criamos 3 objetos de uma mesma classe:
      $data1  = new \Core\Users\Data('user1');
      $data2  = new \Core\Users\Data('user3');
      $data3  = new \Core\Users\Data('user3');
    }
  }
?>
Задание 2

Dadas as seguintes classes:

php<?php
  namespace Core\Admin;
  
  class Controller
  {
    
  }
?>
php<?php
  namespace Users;
  
  class Page extends \Core\Admin\Controller
  {
    
  }
?>

Simplifique o código de herança da classe, aplicando o comando use.