PHP da OOP da Ism Fazolari uchun Sinf Taxalluslari

Faraz qilaylik, bizda ikkita Data sinfi bor, ular turli ism fazolariga tegishli. Faraz qilaylik, qandaydir sinfda bizga ushbu sinflarning ikkala ob'ekti ham kerak:

/project/test.php<?php
  namespace Project;
  
  class Test
  {
    public function __construct()
    {
      $data1 = new \Core\Users\Data; // ob'ekt yaratamiz
      $data2 = new \Core\Admin\Data; // ob'ekt yaratamiz
    }
  }
?>

Faraz qilaylik, biz sinf chaqiruvlarini use buyrug'i orqali soddalashtirishga qaror qildik. Bunda bizni muammo kutadi: ikkala sinf ham Data nomiga ega, bu esa nomlar to'qnashuviga olib keladi:

/project/test.php<?php
  namespace Project;
  
  // Nomlar to'qnashuvi bo'ladi:
  use \Core\Users\Data; // birinchi sinfni ulaymiz
  use \Core\Admin\Data; // ikkinchi sinfni ulaymiz
  
  class Test
  {
    public function __construct()
    {
      $data1 = new Data;
      $data2 = new Data;
    }
  }
?>

Ushbu muammoni hal qilish uchun maxsus as buyrug'i mavjud bo'lib, u ulangan sinfga taxallus berishga imkon beradi - ushbu faylda sinfga kirish nomi. Keling Data sinflarimizga qayta nom beramiz:

/project/test.php<?php
  namespace Project;
  use \Core\Users\Data as UsersData;
  use \Core\Admin\Data as AdminData;
  
  class Test
  {
    public function __construct()
    {
      $data1 = new UsersData;
      $data2 = new AdminData;
    }
  }
?>
Задание 1

Quyidagi kodni use yordamida soddalashtiring:

php<?php
  namespace Project;
  
  class Test
  {
    public function __construct()
    {
      $pageController  = new \Resource\Controller\Page;
      $pageModel       = new \Resource\Model\Page;
    }
  }
?>
Задание 2

Quyidagi kodni use yordamida soddalashtiring:

php<?php
  namespace Project\Data;
  
  class Test
  {
    public function __construct()
    {
      $pageController  = new \Project\Data\Controller\Page;
      $pageModel       = new \Project\Data\Model\Page;
    }
  }
?>