Komanda use dhe hapësirat e emrave në OOP në PHP

Le të supozojmë se kemi klasën e mëposhtme Data:

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

Le të supozojmë gjithashtu se ekziston klasa Page, e cila krijon brenda saj objekte të klasës Data:

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

Siç e shihni, të dy klasat tona janë në hapësira krejtësisht të ndryshme emrash, prandaj thirrjet e klasës Data nuk mund të thjeshtohen, ngjashëm me mënyrën si e bëmë në mësimin e mëparshëm. Këto thirrje, megjithatë, janë shumë të gjata dhe të papërshtatshme, pasi në çdo thirrje të klasës Data duhet të specifikohet hapësira e saj e gjatë e emrave.

Për zgjidhjen e problemeve të tilla ekziston komanda speciale use. Me ndihmën e kësaj komande mjafton të lidhni një herë klasën me emrin e saj të plotë, dhe pas kësaj do të mund të iu referoheni kësaj klase thjesht me emrin e klasës. Shikoni shembullin:

/users/page.php<?php
  namespace Users;
  use \Core\Admin\Data; // lidhim klasën
  
  class Page extends Controller
  {
    public function __construct()
    {
      $data1 = new Data('1'); // e thërrasim thjesht me emër
      $data2 = new Data('2'); // e thërrasim thjesht me emër
    }
  }
?>
Задание 1

Thjeshtoni kodin e mëposhtëm duke përdorur use:

php<?php
  namespace Project;
  
  class Test
  {
    public function __construct()
    {
      // Krijojmë 3 objekte të një klase:
      $data1  = new \Core\Users\Data('user1');
      $data2  = new \Core\Users\Data('user3');
      $data3  = new \Core\Users\Data('user3');
    }
  }
?>
Задание 2

Janë dhënë klasat e mëposhtme:

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

Thjeshtoni kodin e trashëgimisë së klasës, duke aplikuar komandën use.