PHP OOP 네임스페이스에서의 클래스 별칭

서로 다른 네임스페이스에 속하는 두 개의 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 명령이 존재합니다. 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;
    }
  }
?>