De use opdracht en namespaces in OOP in PHP

Stel we hebben de volgende klasse Data:

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

Stel dat er ook een klasse Page is, die binnen zichzelf objecten van de klasse Data aanmaakt:

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

Zoals je ziet, bevinden beide klassen zich in volledig verschillende namespaces, daarom kunnen aanroepen van de klasse Data niet worden vereenvoudigd, op een vergelijkbare manier als we deden in de vorige les. Deze aanroepen zijn echter erg lang en onhandig, omdat bij elke aanroep van de klasse Data zijn lange namespace moet worden gespecificeerd.

Voor het oplossen van dit soort problemen bestaat een speciale opdracht use. Met behulp van deze opdracht is het voldoende om eenmaal verbinding te maken met de klasse via zijn volledige naam, en daarna kan naar deze klasse worden verwezen simpelweg via de klassenaam. Zie voorbeeld:

/users/page.php<?php
  namespace Users;
  use \Core\Admin\Data; // verbinden de klasse
  
  class Page extends Controller
  {
    public function __construct()
    {
      $data1 = new Data('1'); // roepen simpelweg bij naam aan
      $data2 = new Data('2'); // roepen simpelweg bij naam aan
    }
  }
?>
Задание 1

Vereenvoudig de volgende code met gebruikmaking van use:

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

Gegeven zijn de volgende klassen:

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

Vereenvoudig de code van klasse-overerving door de opdracht use toe te passen.