PHP Namespaces
PHP Namespaces
Namespaces များသည် မတူညီသောပြဿနာနှစ်ခုကို ဖြေရှင်းပေးသည့် အရည်အချင်းစစ်များဖြစ်သည်-
- ၎င်းတို့သည် အလုပ်တစ်ခုကိုလုပ်ဆောင်ရန် အတူတကွလုပ်ဆောင်သော အတန်းများကို အုပ်စုဖွဲ့ခြင်းဖြင့် ပိုမိုကောင်းမွန်သောအဖွဲ့အစည်းကို ရရှိစေပါသည်။
- ၎င်းတို့သည် တူညီသောအမည်ကို အတန်းတစ်ခုထက်ပို၍ အသုံးပြုခွင့်ပေးသည်။
ဥပမာအားဖြင့်၊ Table၊ Row နှင့် Cell ကဲ့သို့သော HTML ဇယားတစ်ခုကို ဖော်ပြသည့် အတန်းအစုံရှိနိုင်ပြီး၊ စားပွဲ၊ ကုလားထိုင်နှင့် အိပ်ရာကဲ့သို့သော ပရိဘောဂအကြောင်းဖော်ပြရန် အခြားအတန်းများပါရှိနိုင်သည်။ Namespaces သည် classes များကို မတူညီသောအုပ်စုနှစ်ခုသို့စုစည်းရန်အသုံးပြုနိုင်ပြီး classes နှစ်ခု Table နှင့် Table ကို ရောနှောခြင်းမှကာကွယ်နိုင်သည်။
Namespace ကိုကြေငြာခြင်း။
သော့ချက်စာလုံး ကို အသုံးပြု၍ ဖိုင်တစ်ခု၏အစတွင် Namespace များကို ကြေငြာသည် namespace
-
အထားအသို
Html ဟုခေါ်သော namespace ကိုကြေငြာပါ-
namespace Html;
မှတ်ချက်- ကြေ namespace
ငြာချက်သည် PHP ဖိုင်တွင် ပထမဆုံးအရာဖြစ်ရမည်။ အောက်ပါကုဒ်သည် မမှန်ကန်ပါ-
<?php
echo "Hello World!";
namespace Html;
...
?>
ဤဖိုင်တွင် ဖော်ပြထားသော ကိန်းသေများ၊ အတန်းများနှင့် လုပ်ဆောင်ချက်များသည် Html namespace နှင့် သက်ဆိုင်လိမ့်မည်-
ဥပမာ
Html namespace တွင် Table class တစ်ခုဖန်တီးပါ။
<?php
namespace Html;
class Table {
public $title = "";
public
$numRows = 0;
public function message() {
echo "<p>Table
'{$this->title}' has {$this->numRows} rows.</p>";
}
}
$table = new
Table();
$table->title = "My table";
$table->numRows = 5;
?>
<!DOCTYPE html>
<html>
<body>
<?php
$table->message();
?>
</body>
</html>
နောက်ထပ်အဖွဲ့အစည်းအတွက်၊ nested namespaces ရှိနိုင်သည်-
အထားအသို
Code ဟုခေါ်သော namespace အတွင်းတွင် Html ဟုခေါ်သော namespace ကိုကြေငြာပါ-
namespace Code\Html;
Namespaces ကိုအသုံးပြုခြင်း။
ကြေငြာချက်ကို လိုက်နာသော မည်သည့်ကုဒ်မဆို namespace
namespace အတွင်းတွင် လုပ်ဆောင်နေသည်၊ ထို့ကြောင့် namespace နှင့် သက်ဆိုင်သည့် အတန်းများကို အရည်အချင်းသတ်မှတ်ချက်များ မပါဘဲ ချက်ချင်းလုပ်ဆောင်နိုင်သည်။ namespace ပြင်ပမှ အတန်းများကို ဝင်ရောက်ရန်၊ အတန်းတွင် ၎င်းနှင့် တွဲထားသော namespace ရှိရန် လိုအပ်သည်။
ဥပမာ
Html namespace မှ အတန်းများကို သုံးပါ။
$table = new Html\Table()
$row = new Html\Row();
တူညီသော namespace မှ အတန်းများစွာကို တစ်ချိန်တည်းတွင် အသုံးပြုသောအခါ၊ namespace
သော့ချက်စကားလုံးကို အသုံးပြုရန် ပိုမိုလွယ်ကူသည်-
ဥပမာ
Html\qualifier မလိုအပ်ဘဲ Html namespace မှ အတန်းများကို သုံးပါ-
namespace Html;
$table = new Table();
$row = new Row();
Namespace Alias
ရေးရလွယ်ကူစေရန် namespace သို့မဟုတ် class ကို alias ပေးခြင်းဖြင့် အသုံးဝင်နိုင်သည်။ ၎င်းကို use
အဓိကစကားလုံးဖြင့် လုပ်ဆောင်သည်-
ဥပမာ
နံမည်ကွက်တစ်ခု နံမည်တစ်ခု ပေးပါ။
use Html as H;
$table = new H\Table();
ဥပမာ
အတန်းတစ်ခုအား နံမည်တစ်ခုပေးပါ။
use Html\Table as
T;
$table = new T();