use հրամանը և namespace-ները OOP-ում 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');
    }
  }
?>

Ինչպես տեսնում եք, մեր երկու դասերն էլ գտնվում են բոլորովին տարբեր namespace-ներում, ուստի Data դասի կանչերը հնարավոր չէ պարզեցնել, ինչպես դա արեցինք նախորդ դասում: Սակայն այդ կանչերը շատ երկար և անհարմար են, քանի որ Data դասի յուրաքանչյուր կանչի ժամանակ պետք է նշել դրա երկար namespace-ը:

Նմանատիպ խնդիր լուծելու համար գոյություն ունի հատուկ 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 հրամանը: