PHP OOP에서 use 명령어와 네임스페이스

다음과 같은 Data 클래스가 있다고 가정해 봅시다:

/core/admin/data.php<?php
  namespace \Core\Admin;
  
  class Data
  {
    public function __construct($num)
    {
      
    }
  }
?>

또한 내부에서 Data 클래스의 객체를 생성하는 Page 클래스도 있다고 가정합니다:

/users/page.php<?php
  namespace Users;
  
  class Page
  {
    public function __construct()
    {
      $data1 = new \Core\Admin\Data('1');
      $data2 = new \Core\Admin\Data('2');
    }
  }
?>

보시다시피, 우리의 두 클래스는 완전히 다른 네임스페이스에 있기 때문에, 이전 강의에서 했던 것처럼 Data 클래스 호출을 간소화할 수 없습니다. 그러나 이 호출들은 각 클래스 호출마다 긴 네임스페이스를 지정해야 하기 때문에 매우 길고 불편합니다.

이러한 문제를 해결하기 위해 특별한 명령어 use가 존재합니다. 이 명령어를 사용하면 클래스를 전체 이름으로 한 번만 연결(import)하면, 그 후에는 클래스 이름만으로 해당 클래스에 접근할 수 있습니다. 예를 참고하세요:

/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 명령어를 적용하여 클래스 상속 코드를 간소화하세요.