PHP-daky OOP-da use buýrugy we at giňişlikleri

Bizde aşakdaky Data klasymyz bar bolsun:

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

Şeýle hem, içinde Data klasynyň obýektlerini döredýän Page klasy bar bolsun:

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

Görşüňiz ýaly, iki klasymyz hem düýbünden tapawutly at giňişliklerinde ýerleşýär, şonuň üçin öňki sapakda etişimiz ýaly, Data klasyna çakylyşlary ýönekeýleşdirmek mümkin däl. Emma bu çakylyşlar, her gezek klasyň uzyn at giňişligini görkezmek zerurlygy sebäpli, gaty uzyn we ýaramaz.

Beýle bir meseläni çözmek üçin aýratyn use buýrugy bar. Bu buýruk bilen klasy tutuş ady arkaly bir gezek birikdirmek ýeterlidir we ondan soň bu klasa diňe ady boýunça ýüzlenmek mümkin. Mysala serediň:

/users/page.php<?php
  namespace Users;
  use \Core\Admin\Data; // klasy birikdirýäris
  
  class Page extends Controller
  {
    public function __construct()
    {
      $data1 = new Data('1'); // diňe ady boýunça çagyrýarys
      $data2 = new Data('2'); // diňe ady boýunça çagyrýarys
    }
  }
?>
Задание 1

Aşakdaky kody use ulanyp ýönekeýleşdiriň:

php<?php
  namespace Project;
  
  class Test
  {
    public function __construct()
    {
      // Bir klasyň 3 sany obýektini döredýäris:
      $data1  = new \Core\Users\Data('user1');
      $data2  = new \Core\Users\Data('user3');
      $data3  = new \Core\Users\Data('user3');
    }
  }
?>
Задание 2

Aşakdaky klaslar berlen:

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

use buýrugyny ulanyp, miras alyş koduny ýönekeýleşdiriň.