PHP OOP ရှိ အမည်နေရာ များ၏ အတွင်းပိုင်း ခွဲခြားမှုများ

ယခု ကျွန်ုပ်တို့တွင် ပို၍ရှုပ်ထွေးသော အခြေအနေတစ်ခု ရှိသည်ဟု ဆိုကြပါစို့- အက်ဒမင်အတွက် Page class နှစ်ခု ပြုလုပ်ရန်လိုအပ်သည် - တစ်ခုမှာ စာမျက်နှာ အချက်အလက်များဖြင့်၊ ဒုတိယမှာ ထိုအချက်အလက်များ၏ အသွင်အပြင် ဖြစ်သည်။ ပထမ class သည် /admin/data/page.php ဖိုင်တွင် တည်ရှိပြီး၊ ဒုတိယ class သည် - /admin/view/page.php ဖိုင်တွင် တည်ရှိသည်ဟု ဆိုကြပါစို့။

ယခင်သင်ခန်းစာများတွင် ကျွန်ုပ်တို့ဆုံးဖြတ်ခဲ့သည်မှာ admin ဖိုလ်ဒါမှ class အားလုံးသည် Admin အမည်နေရာ၏ အစိတ်အပိုင်းဖြစ်ရမည်။ သို့သော်၊ ယခု ထိုအမည်နေရာထဲတွင် class နှစ်ခု၏ အမည်တူမှု ပြဿနာ ပေါ်လာပါသည်။ ပြဿနာကိုဖြေရှင်းရန် အမည်နေရာ၏ အတွင်းပိုင်း အဆင့်များ (subspaces) ပြုလုပ်နိုင်သည်။ ဥပမာအားဖြင့်၊ Admin အမည်နေရာကို ပြုလုပ်ပြီး၊ ယင်းအတွင်း၌ Data နှင့် View ဆိုသော အတွင်းပိုင်း အမည်နေရာများ ပြုလုပ်နိုင်သည်။ ထိုသို့ဆိုလျှင် ထိုအတွင်းပိုင်း အမည်နေရာများ၏ အမည်များကို backslash ဖြင့် ခွဲခြားရေးသားရပြီး - ၎င်းကို အမည်နေရာ သတ်မှတ်သည့်အခါနှင့် class object ဖန်တီးသည့်အခါ နှစ်မျိုးစလုံးတွင် သုံးနိုင်သည်။

ဤနေရာတွင် ရှင်းလင်းချက်ပေးရမည်မှာ၊ အတွင်းပိုင်း အမည်နေရာများ၏ အဆင့်ဆင့် ခွဲခြားမှု အဆင့်အရေအတွက်ကို ကန့်သတ်ထားခြင်းမရှိပါ (အတွင်းပိုင်းတွင် နောက်ထပ် အတွင်းပိုင်း အမည်နေရာများကို ထပ်မံပြုလုပ်နိုင်ပြီး ထိုနည်းအတိုင်း ဆက်သွားနိုင်သည်)။

ထို့ကြောင့်၊ ကျွန်ုပ်တို့ အထက်တွင် ဖော်ပြခဲ့သည့် ဥပမာကို ပြီးအောင်လုပ်ကြည့်ကြပါစို့။ /admin/data/page.php ဖိုင်မှ Page class အတွက် Admin\Data ဟူသော အမည်နေရာကို သတ်မှတ်ပေးပါမည်-

/admin/data/page.php<?php
  namespace Admin\Data;
  
  class Page
  {
    
  }
?>

/admin/view/page.php ဖိုင်မှ Page class အတွက် Admin\View ဟူသော အမည်နေရာကို သတ်မှတ်ပေးပါမည်-

/admin/view/page.php<?php
  namespace Admin\View;
  
  class Page
  {
    
  }
?>

ကျွန်ုပ်တို့၏ class များ၏ object များကို ဖန်တီးကြပါစို့-

/index.php<?php
  require_once '/admin/data/page.php';
  require_once '/admin/view/page.php';
  
  $adminDataPage = new \Admin\Data\Page;
  $adminViewPage = new \Admin\View\Page;
?>
Задание 1

သင့်တွင် modules/cart ဆိုသော ဖိုလ်ဒါရှိသည်ဟု ဆိုကြပါစို့။ ထိုဖိုလ်ဒါမှ class အားလုံးသည် Modules\Cart အမည်နေရာ၏ အစိတ်အပိုင်းများဖြစ်အောင် ပြုလုပ်ပါ။

Задание 2

သင့်တွင် modules/shop/cart/ ဆိုသော ဖိုလ်ဒါရှိသည်ဟု ဆိုကြပါစို့။ ထိုဖိုလ်ဒါမှ class အားလုံးသည် Modules\Shop\Cart အမည်နေရာ၏ အစိတ်အပိုင်းများဖြစ်အောင် ပြုလုပ်ပါ။