Դասերի մականուններ namespace-ների համար OOP-ում PHP-ում

Ենթադրենք, մենք ունենք երկու Data դասեր, որոնք պատկանում են տարբեր namespace-ների: Ենթադրենք, ինչ-որ դասում մեզ անհրաժեշտ են օբյեկտներ այդ երկու դասերից ևս:

/project/test.php<?php
  namespace Project;
  
  class Test
  {
    public function __construct()
    {
      $data1 = new \Core\Users\Data; // ստեղծում ենք օբյեկտ
      $data2 = new \Core\Admin\Data; // ստեղծում ենք օբյեկտ
    }
  }
?>

Ենթադրենք, մենք որոշեցինք պարզեցնել դասերի կանչերը use հրամանի միջոցով: Այս դեպքում մեզ սպասվում է խնդիր. երկու դասերն էլ ունեն Data անուն, իսկ դա նշանակում է, որ մենք կունենանք անունների կոնֆլիկտ.

/project/test.php<?php
  namespace Project;
  
  // Կլինի անունների կոնֆլիկտ.
  use \Core\Users\Data; // միացնում ենք առաջին դասը
  use \Core\Admin\Data; // միացնում ենք երկրորդ դասը
  
  class Test
  {
    public function __construct()
    {
      $data1 = new Data;
      $data2 = new Data;
    }
  }
?>

Այս խնդիրը լուծելու համար գոյություն ունի հատուկ as հրաման, որը թույլ է տալիս միացվող դասին նշանակել մականուն - այն անունը, որով այդ դասը հասանելի կլինի այս ֆայլում: Եկեք անվանափոխենք մեր Data դասերը.

/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

Պարզեցրեք հետևյալ կոդը օգտագործելով use.

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

Պարզեցրեք հետևյալ կոդը օգտագործելով use.

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