Use käsu ja nimeruumide kasutamine OOP-s PHP-s

Oletame, et meil on järgmine klass Data:

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

Oletame ka, et on olemas klass Page, mis loob iseses objektid klassist Data:

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

Nagu näete, on mõlemad meie klassid täiesti erinevates nimeruumides, seetõttu klassi Data kutseid ei saa lihtsustada sarnaselt sellele, kuidas me seda tegime eelmises õppetükis. Need kutsed on siiski väga pikad ja ebamugavad, kuna igas klassi Data kutses tuleb määrata selle pikk nimeruum.

Sellise probleemi lahendamiseks on olemas spetsiaalne käsk use. Selle käsu abil piisab klassist üks kord ühendust võtmast tema täieliku nime järgi ja pärast seda saab sellele klassile lihtsalt viidata klassi nime järgi. Vaadake näidet:

/users/page.php<?php
  namespace Users;
  use \Core\Admin\Data; // ühendame klassi
  
  class Page extends Controller
  {
    public function __construct()
    {
      $data1 = new Data('1'); // kutsume lihtsalt nime järgi
      $data2 = new Data('2'); // kutsume lihtsalt nime järgi
    }
  }
?>
Задание 1

Lihtsustage järgnevat koodi kasutades use käsku:

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

Antud on järgmised klassid:

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

Lihtsustage klassi pärimise koodi, rakendades use käsku.