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 কমান্ড প্রয়োগ করে ক্লাস ইনহেরিটেন্সের কোডটি সরল করুন।