PHP හි OOP හි use විධානය සහ නාම අවකාශ

අපට පහත දැක්වෙන Data වර්ගය ඇතැයි සිතමු:

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

Page වර්ගයක් ද ඇතැයි සිතමු, එය තුළ Data වර්ගයේ වස්තු සාදයි:

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

ඔබට පෙනෙන පරිදි, අපගේ වර්ග දෙකම සිටින්නේ සම්පූර්ණයෙන්ම වෙනස් නාම අවකාශවල, එබැවින් Data වර්ගය කැඳවීම් සරල කළ නොහැක, අපි එය පෙර පාඩමේදී කළ ආකාරයටම. මෙම කැඳවීම්, කෙසේ වෙතත්, ඉතා දිගු සහ අපහසු වේ, එක් එක් Data වර්ගය කැඳවීමේදී එහි දිගු නාම අවකාශය සඳහන් කිරීමට සිදුවන බැවිනි.

මෙවැනි ගැටළුවක් විසඳීම සඳහා පවතී විශේෂ use විධානය. භාවිතා කරමින් මෙම විධානය, එහි සම්පූර්ණ නම අනුව වර්ගය සම්බන්ධ කිරීමට එක් වරක් පමණක් ප්‍රමාණවත් වේ, ඉන් පසුව මෙම වර්ගයට ළඟා විය හැක්කේ සරලව වර්ගයේ නමෙනි. උදාහරණය බලන්න:

/users/page.php<?php
  namespace Users;
  use \Core\Admin\Data; // වර්ගය සම්බන්ධ කරන්න
  
  class Page extends Controller
  {
    public function __construct()
    {
      $data1 = new Data('1'); // නමෙන් සරලව කැඳවන්න
      $data2 = new Data('2'); // නමෙන් සරලව කැඳවන්න
    }
  }
?>
Задание 1

පහත දැක්වෙන කේතය සරල කරන්න භාවිතා කරමින් use:

php<?php
  namespace Project;
  
  class Test
  {
    public function __construct()
    {
      // එක් වර්ගයක වස්තු 3 ක් සාදන්න:
      $data1  = new \Core\Users\Data('user1');
      $data2  = new \Core\Users\Data('user3');
      $data3  = new \Core\Users\Data('user3');
    }
  }
?>
Задание 2

පහත දැක්වෙන වර්ග ලබා දී ඇත:

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

කේතයේ උරුමකම සරල කරන්න, යෙදීමෙන් use විධානය.