PHP OOP တွင် use command နှင့် Namespace များ

ကျွန်ုပ်တို့မှာ အောက်ပါ Data class ရှိသည်ဆိုပါစို့ Data:

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

ထို့အပြင် Page class ရှိပြီး ၎င်းအတွင်းမှ Data class objects တွေ ဖန်တီးတယ်ဆိုပါစို့ Page:

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

မြင်တဲ့အတိုင်း ကျွန်ုပ်တို့ class နှစ်ခုလုံးဟာ namespace အမျိုးမျိုးမှာရှိနေတဲ့အတွက် အရင်သင်ခန်းစာမှာလုပ်ခဲ့သလို Data class ခေါ်ဆိုမှုတွေကို ရိုးရှင်းအောင်လုပ်လို့မရပါဘူး။ ဒါပေမယ့် ဒီခေါ်ဆိုမှုတွေက အရမ်းရှည်ပြီး အဆင်မပြေပါဘူး၊ ဘာလို့လဲဆိုတော့ Data class ခေါ်တိုင်း သူ့ရဲ့ရှည်လျားတဲ့ namespace ကိုဖော်ပြရလို့ပါ။

ဒီလိုပြဿနာမျိုးကိုဖြေရှင်းဖို့အတွက် အထူး use command ရှိပါတယ် use။ ဒီ command ကိုသုံးပြီး class တစ်ခုကို သူ့ရဲ့အပြည့်အစုံနာမည်နဲ့ တစ်ခါချိတ်ဆက်လိုက်ရုံနဲ့ ဒီကနေ့ပြီးတော့ class ကိုရိုးရှင်းတဲ့ class name နဲ့ပဲ ခေါ်ဆိုနိုင်မှာဖြစ်ပါတယ်။ ဥပမာကိုကြည့်ပါ:

/users/page.php<?php
  namespace Users;
  use \Core\Admin\Data; // class ကိုချိတ်ဆက်ပါ
  
  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()
    {
      // class တစ်ခုတည်းရဲ့ object ၃ ခုကိုဖန်တီးပါ:
      $data1  = new \Core\Users\Data('user1');
      $data2  = new \Core\Users\Data('user3');
      $data3  = new \Core\Users\Data('user3');
    }
  }
?>
Задание 2

အောက်ပါ class များပေးထားသည်:

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

Class ကို အမွေဆက်ခံတဲ့ကုဒ်ကို use command သုံးပြီး ရိုးရှင်းအောင်လုပ်ပါ။