Команда 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.