A use parancs és a névterek az OOP-ban PHP-ben

Tegyük fel, hogy a következő Data osztályunk van:

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

Tegyük fel, hogy van egy Page osztály is, amely belül Data objektumokat hoz létre:

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

Amint látod, mindkét osztályunk teljesen eltérő névterekben található, ezért a Data osztály hívásait nem lehet leegyszerűsíteni, ahogyan azt az előző leckében tettük. Ezek a hívások azonban nagyon hosszúak és kényelmetlenek, mivel minden Data osztály hívásakor meg kell adni a hosszú névterét.

Egy ilyen probléma megoldására létezik egy speciális use parancs. Ezzel a paranccsal elég egyszer csatlakoztatni az osztályt a teljes nevével, és ezután egyszerűen az osztály nevével lehet hivatkozni rá. Lásd a példát:

/users/page.php<?php
  namespace Users;
  use \Core\Admin\Data; // csatlakoztatjuk az osztályt
  
  class Page extends Controller
  {
    public function __construct()
    {
      $data1 = new Data('1'); // egyszerűen a névvel hívjuk
      $data2 = new Data('2'); // egyszerűen a névvel hívjuk
    }
  }
?>
Задание 1

Egyszerűsítsd a következő kódot a use használatával:

php<?php
  namespace Project;
  
  class Test
  {
    public function __construct()
    {
      // 3 objektumot hozunk létre ugyanabból az osztályból:
      $data1  = new \Core\Users\Data('user1');
      $data2  = new \Core\Users\Data('user3');
      $data3  = new \Core\Users\Data('user3');
    }
  }
?>
Задание 2

Adottak a következő osztályok:

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

Egyszerűsítsd az osztály öröklésének kódját a use parancs alkalmazásával.