Bí danh lớp cho không gian tên trong OOP PHP

Giả sử chúng ta có hai lớp Data, thuộc về các không gian tên khác nhau. Giả sử trong một lớp nào đó chúng ta cần các đối tượng của cả hai lớp này:

/project/test.php<?php
  namespace Project;
  
  class Test
  {
    public function __construct()
    {
      $data1 = new \Core\Users\Data; // tạo đối tượng
      $data2 = new \Core\Admin\Data; // tạo đối tượng
    }
  }
?>

Giả sử chúng ta quyết định đơn giản hóa việc gọi lớp thông qua lệnh use. Trong trường hợp này chúng ta sẽ gặp phải vấn đề: cả hai lớp đều có tên Data, điều này có nghĩa là chúng ta sẽ có xung đột tên:

/project/test.php<?php
  namespace Project;
  
  // Sẽ có xung đột tên:
  use \Core\Users\Data; // kết nối lớp đầu tiên
  use \Core\Admin\Data; // kết nối lớp thứ hai
  
  class Test
  {
    public function __construct()
    {
      $data1 = new Data;
      $data2 = new Data;
    }
  }
?>

Để giải quyết vấn đề này tồn tại một lệnh đặc biệt as, cho phép đặt bí danh cho lớp được kết nối - tên mà lớp này sẽ có thể truy cập được trong tệp này. Hãy thực hiện đổi tên các lớp Data của chúng ta:

/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

Đơn giản hóa mã sau bằng cách sử dụng use:

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

Đơn giản hóa mã sau bằng cách sử dụng use:

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