PHP'de OOP'de use Komutu ve İsim Alanları

Diyelim ki aşağıdaki Data sınıfımız var:

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

Ayrıca, içinde Data sınıfının nesnelerini oluşturan bir Page sınıfı olduğunu varsayalım:

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

Gördüğünüz gibi, her iki sınıfımız da tamamen farklı isim alanlarında bulunuyor, bu nedenle Data sınıfı çağrılarını, bir önceki derste yaptığımız gibi basitleştirmek mümkün değil. Ancak bu çağrılar çok uzun ve kullanışsız, çünkü her Data sınıfı çağrısında uzun isim alanını belirtmek gerekiyor.

Bu tür bir sorunu çözmek için özel bir use komutu bulunmaktadır. Bu komut yardımıyla, sınıfı tam adıyla bir kez bağlamak yeterlidir ve bundan sonra bu sınıfa doğrudan sınıf adıyla erişilebilir. Örneğe bakın:

/users/page.php<?php
  namespace Users;
  use \Core\Admin\Data; // sınıfı bağlıyoruz
  
  class Page extends Controller
  {
    public function __construct()
    {
      $data1 = new Data('1'); // doğrudan adıyla çağırıyoruz
      $data2 = new Data('2'); // doğrudan adıyla çağırıyoruz
    }
  }
?>
Задание 1

Aşağıdaki kodu use kullanarak basitleştirin:

php<?php
  namespace Project;
  
  class Test
  {
    public function __construct()
    {
      // Aynı sınıftan 3 nesne oluşturuyoruz:
      $data1  = new \Core\Users\Data('user1');
      $data2  = new \Core\Users\Data('user3');
      $data3  = new \Core\Users\Data('user3');
    }
  }
?>
Задание 2

Aşağıdaki sınıflar verilmiştir:

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

use komutunu uygulayarak sınıf kalıtım kodunu basitleştirin.