Komanda use un vārdtelpas OOP PHP

Pieņemsim, ka mums ir šāda klase Data:

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

Pieņemsim, ka ir arī klase Page, kas iekšpusē veido Data klases objektus:

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

Kā jūs redzat, abas mūsu klases atrodas pilnīgi dažādās vārdtelpās, tāpēc Data klases izsaukumus nevar vienkāršot, līdzīgi kā mēs to darījām iepriekšējā nodarbībā. Šie izsaukumi tomēr ir ļoti gari un neērti, jo katrā Data klases izsaukumā nākas norādīt tās garo vārdtelpu.

Lai atrisinātu šādu problēmu, pastāv īpaša komanda use. Izmantojot šo komandu, pietiek vienreiz pievienot klasi pēc tās pilnā nosaukuma, un pēc tam varēs piekļūt šai klasei vienkārši pēc klases nosaukuma. Skatiet piemēru:

/users/page.php<?php
  namespace Users;
  use \Core\Admin\Data; // pievienojam klasi
  
  class Page extends Controller
  {
    public function __construct()
    {
      $data1 = new Data('1'); // izsaucam vienkārši pēc nosaukuma
      $data2 = new Data('2'); // izsaucam vienkārši pēc nosaukuma
    }
  }
?>
Задание 1

Vienkāršojiet šādu kodu, izmantojot use:

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

Dotas šādas klases:

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

Vienkāršojiet mantojuma kodu, izmantojot komandu use.