Die use-opdrag en naamruimtes in OOP in PHP

Gestel ons het die volgende klas Data:

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

Gestel daar is ook 'n klas Page wat binne-in homself voorwerpe van die klas Data skep:

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

Soos jy kan sien, is albei ons klasse in heel ander naamruimtes, daarom kan die oproepe na die klas Data nie vereenvoudig word nie, soos ons in die vorige les gedoen het. Hierdie oproepe is egter baie lank en ongerieflik, want in elke oproep na die klas Data moet sy lang naamruimte gespesifiseer word.

Vir die oplossing van hierdie soort probleem bestaan daar 'n spesiale opdrag use. Met behulp van hierdie opdrag is dit genoeg om een keer die klas volgens sy volledige naam te koppel, en daarna kan na hierdie klas eenvoudig volgens die klasnaam verwys word. Kyk na die voorbeeld:

/users/page.php<?php
  namespace Users;
  use \Core\Admin\Data; // koppel die klas
  
  class Page extends Controller
  {
    public function __construct()
    {
      $data1 = new Data('1'); // roep eenvoudig volgens naam
      $data2 = new Data('2'); // roep eenvoudig volgens naam
    }
  }
?>
Задание 1

Vereenvoudig die volgende kode met die gebruik van use:

php<?php
  namespace Project;
  
  class Test
  {
    public function __construct()
    {
      // Skep 3 voorwerpe van een klas:
      $data1  = new \Core\Users\Data('user1');
      $data2  = new \Core\Users\Data('user3');
      $data3  = new \Core\Users\Data('user3');
    }
  }
?>
Задание 2

Die volgende klasse word gegee:

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

Vereenvoudig die kode van klas-oorerwing deur die opdrag use toe te pas.