PHP da OOP da use buyrug'i va nomlar fazolari

Faraz qilaylik, bizda quyidagi Data klassi mavjud:

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

Shuningdek, faraz qilaylik, ichida Data klassining obyektlarini yaratadigan Page klassi mavjud:

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

Ko'rib turganingizdek, ikkala klassimiz ham turli nomlar fazolarida joylashgan, shuning uchun Data klassini chaqirishlarni oldingi darsda qilganimizdek soddalashtirib bo'lmaydi. Biroq, bu chaqirishlar juda uzun va qulaysiz, chunki har bir Data klassini chaqirishda uning uzun nomlar fazosini ko'rsatishga to'g'ri keladi.

Bunday muammoni hal qilish uchun maxsus use buyrug'i mavjud. Ushbu buyruq yordamida klassni uning to'liq nomi bilan bir marta ulash kifoya, shundan so'ng bu klassga oddiygina klass nomi bilan murojaat qilish mumkin bo'ladi. Misolni ko'ring:

/users/page.php<?php
  namespace Users;
  use \Core\Admin\Data; // klassni ulaymiz
  
  class Page extends Controller
  {
    public function __construct()
    {
      $data1 = new Data('1'); // oddiy nom bilan chaqiramiz
      $data2 = new Data('2'); // oddiy nom bilan chaqiramiz
    }
  }
?>
Задание 1

Quyidagi kodni use yordamida soddalashtiring:

php<?php
  namespace Project;
  
  class Test
  {
    public function __construct()
    {
      // Bir klassning 3 ta obyektini yaratamiz:
      $data1  = new \Core\Users\Data('user1');
      $data2  = new \Core\Users\Data('user3');
      $data3  = new \Core\Users\Data('user3');
    }
  }
?>
Задание 2

Quyidagi klasslar berilgan:

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

use buyrug'ini qo'llab, klass meros olish kodini soddalashtiring.