Команда use и пространства имен в ООП в PHP

Претпоставимо да имамо следећу класу Data:

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

Претпоставимо такође да постоји класа Page, која креира унутар себе објекте класе Data:

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

Као што видите, обе наше класе се налазе у потпуно различитим именским просторима, па се позиви класе Data не могу поједноставити, налик на онај начин како смо то радили у претходној лекцији. Ови позиви су, међутим, веома дугачки и незгодни, јер у сваком позиву класе Data морамо наводити његов дуги именски простор.

За решавање сличног проблема постоји специјална команда use. Помоћу ове команде довољно је једном повезати класу по њеном пуним имену, и након тога ће се моћи обраћати тој класи једноставно по имену класе. Погледајте пример:

/users/page.php<?php
  namespace Users;
  use \Core\Admin\Data; // повезујемо класу
  
  class Page extends Controller
  {
    public function __construct()
    {
      $data1 = new Data('1'); // позивамо једноставно по имену
      $data2 = new Data('2'); // позивамо једноставно по имену
    }
  }
?>
Задание 1

Поједноставите следећи код коришћењем use:

php<?php
  namespace Project;
  
  class Test
  {
    public function __construct()
    {
      // Креирамо 3 објекта једнаке класе:
      $data1  = new \Core\Users\Data('user1');
      $data2  = new \Core\Users\Data('user3');
      $data3  = new \Core\Users\Data('user3');
    }
  }
?>
Задание 2

Дате су следеће класе:

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

Поједноставите код наслеђивања класе, применивши команду use.