კლასების ფსევდონიმები ნეიმსფეისებისთვის OOP-ში PHP-ში

დავუშვათ, გვაქვს ორი კლასი Data, რომლებიც სხვადასხვა ნეიმსფეისს ეკუთვნის. დავუშვათ, რომელიმე კლასში გვჭირდება ორივე ამ კლასის ობიექტები:

/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, რომელიც საშუალებას აძლევს დავუმატოთ შემოტანილ კლასს ფსევდონიმი - სახელი, under which ეს კლასი იქნება ხელმისაწვდომი ამ ფაილში. მოდით გადავარქვათ ჩვენი კლასები 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;
    }
  }
?>