PHP-də OOP-də use komandası və ad fəzaları

Tutaq ki, bizim aşağıdakı Data sinfimiz var:

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

Tutaq ki, həmçinin öz içərisində Data sinfinin obyektlərini yaradan Page sinfi də var:

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

Gördüyünüz kimi, hər iki sinifimiz tamamilə fərqli ad fəzalarında yerləşir, buna görə də Data sinfinin çağırışlarını, əvvəlki dərsdə etdiyimiz kimi, sadələşdirmək olmaz. Lakin bu çağırışlar çox uzun və əlverişsizdir, çünki hər Data sinfi çağırışında onun uzun ad fəzasını göstərmək lazımdır.

Bu kimi problemləri həll etmək üçün xüsusi use komandası mövcuddur. Bu komanda vasitəsilə sinfi bir dəfə onun tam adı ilə qoşmaq kifayətdir, bundan sonra isə bu sinfə sadəcə sinfin adı ilə müraciət etmək olar. Nümunəyə baxın:

/users/page.php<?php
  namespace Users;
  use \Core\Admin\Data; // sinfi qoşuruq
  
  class Page extends Controller
  {
    public function __construct()
    {
      $data1 = new Data('1'); // sadəcə adla çağırırıq
      $data2 = new Data('2'); // sadəcə adla çağırırıq
    }
  }
?>
Задание 1

Aşağıdakı kodu use istifadə edərək sadələşdirin:

php<?php
  namespace Project;
  
  class Test
  {
    public function __construct()
    {
      // Eyni sinifdən 3 obyekt yaradırıq:
      $data1  = new \Core\Users\Data('user1');
      $data2  = new \Core\Users\Data('user3');
      $data3  = new \Core\Users\Data('user3');
    }
  }
?>
Задание 2

Aşağıdakı siniflər verilmişdir:

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

use komandasını tətbiq edərək sinif mirasının kodunu sadələşdirin.