Arahan use dan Ruang Nama dalam OOP dalam PHP

Katakan kita mempunyai kelas Data berikut:

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

Katakan juga terdapat kelas Page, yang mencipta objek kelas Data di dalamnya:

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

Seperti yang anda lihat, kedua-dua kelas kami berada dalam ruang nama yang berbeza sama sekali, oleh itu panggilan kelas Data tidak boleh dipermudahkan, seperti yang kita lakukan dalam pelajaran sebelumnya. Walau bagaimanapun, panggilan ini sangat panjang dan menyusahkan, kerana dalam setiap panggilan kelas Data perlu menyatakan ruang namanya yang panjang.

Untuk menyelesaikan masalah seperti ini, terdapat arahan khas use. Dengan menggunakan arahan ini, cukup untuk menyambungkan kelas sekali dengan nama penuhnya, dan selepas itu kelas ini boleh diakses hanya dengan nama kelasnya. Lihat contoh:

/users/page.php<?php
  namespace Users;
  use \Core\Admin\Data; // sambungkan kelas
  
  class Page extends Controller
  {
    public function __construct()
    {
      $data1 = new Data('1'); // panggil hanya dengan nama
      $data2 = new Data('2'); // panggil hanya dengan nama
    }
  }
?>
Задание 1

Permudahkan kod berikut dengan menggunakan use:

php<?php
  namespace Project;
  
  class Test
  {
    public function __construct()
    {
      // Cipta 3 objek daripada satu kelas:
      $data1  = new \Core\Users\Data('user1');
      $data2  = new \Core\Users\Data('user3');
      $data3  = new \Core\Users\Data('user3');
    }
  }
?>
Задание 2

Diberi kelas berikut:

php<?php
  namespace Core\Admin;
  
  class Controller
  {
    
  }
?>
php<?php
  namespace Users;
  
  class Page extends \Core\Admin\Controller
  {
    
  }
?>

Permudahkan kod pewarisan kelas dengan menggunakan arahan use.