လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> PHP အမှားအယွင်းအခါ namespace ကိုရှာမတွေ့ပါမှုအတွက်အကြောင်းပြချက်နှင့်ဖြေရှင်းချက်

PHP အမှားအယွင်းအခါ namespace ကိုရှာမတွေ့ပါမှုအတွက်အကြောင်းပြချက်နှင့်ဖြေရှင်းချက်

gitbox 2025-06-16

PHP တွင်ကုဒ်နံပါတ်ရေးသားသည့်အခါ "သတ်မှတ်ထားသော namespace ကိုမတွေ့ရသေးသော" ဟုမှားယွင်းစွာကြုံတွေ့ရနိုင်သည်။ ဆိုလိုသည်မှာ PHP စကားပြန်သည်လူတန်းစားသို့မဟုတ်လုပ်ဆောင်မှုသည်နေထိုင်သောနေရာကိုအသိအမှတ်မပြုနိုင်ပါ။ ဤဆောင်းပါးသည်ဤပြ problem နာကိုမည်သို့ဖြေရှင်းရမည်ကိုသင်မိတ်ဆက်ပေးပါမည်။

1 ။ namespace ဆိုတာဘာလဲ

PHP စီမံကိန်းများအတွက်ဘ 0 ၏အမည်များပ conflicts ိပက်ခများအပေါ်ပ conflicts ိပက်ခများကိုရှောင်ရှားရန်လုပ်ငန်းဆောင်တာများ, စီမံကိန်းတစ်ခုတွင် Namespace ကိုအသုံးပြုခြင်းသည်အမည်နှင့်တူညီသောအမည်နှင့်တူညီသောအမည်များကိုမတူညီသောအမည်များကိုပိုင်ခွင့်ပြုသည်, ထို့ကြောင့်နာမတော်ပ conflicts ိပက်ခများကိုရှောင်ရှားရန်ဖြစ်သည်။

2 ။ namespace ၏အဓိပ္ပါယ်

PHP တွင် Namespace သော့ချက်စာလုံးကို namespace ကိုသတ်မှတ်ရန်အသုံးပြုနိုင်သည်။ ဥပမာအားဖြင့်:

my_namespace namespace;

MyClass အတန်း
    // ... Class Content}}

my_function () {) function ကို function
    // ... function content}}
    

အထက်ဖော်ပြပါကုဒ်များတွင် My_Namesace ဟုခေါ်သော namespace တစ်ခုကိုသတ်မှတ်ပြီး MyCrSime Class နှင့် My_FUnction function ကိုဖန်တီးသည်။

3 ။ namespace ၏ခေါ်ဆိုမှု

လူတန်းစားတစ်ခုသို့မဟုတ်လုပ်ဆောင်ချက်တစ်ခုကို namespace ထဲ၌ခေါ်ဆိုသောအခါ namespace လမ်းကြောင်းကိုသုံးရန်လိုအပ်သည်။ ဥပမာအားဖြင့်:

MyClass = My_Namespace \ MyClass ();
my_namespace \ my_function ();
    

ဤတွင်ကျွန်ုပ်တို့သည် My_Funge လမ်းကြောင်းမှတဆင့် MyCamStace ရှိ MyCamStime တွင် MyCamEDDACE တွင်ချက်ချင်းပဲ My_FUNIction function ကိုခေါ်သည်။

4 ။ သတ်မှတ်ထားသော namespace အမှားကိုမတွေ့ပါ

အမှားတစ်ခု "သတ်မှတ်ထားသော namespace မတွေ့ပါ" ပေါ်လာသည့်အခါအောက်ပါတို့နှင့်ဆင်တူသောအမှားအယွင်းတစ်ခုတွေ့ရလေ့ရှိသည်။

Fatal Error: uncraff-rouds: Class 'My_Namespace \ MyClass' မတွေ့ပါ
    

ဤအမှားက PHP သည်အောက်ပါအကြောင်းပြချက်များကြောင့်ဖြစ်ရခြင်းကြောင့်သတ်မှတ်ထားသောသတ်မှတ်ထားသော namespace သို့မဟုတ် class ကိုရှာမတွေ့နိုင်ကြောင်းဖော်ပြသည်။

4.1 Namespace အဓိပ္ပာယ်ဖွင့်ဆိုချက်ကိုစစ်ဆေးပါ

ပထမ ဦး ဆုံး namespace ကိုမှန်ကန်စွာသတ်မှတ်ခြင်းရှိမရှိစစ်ဆေးပါ။ အဆိုပါ namespace ၏အဓိပ္ပါယ်သည်အမှန်တကယ်လူတန်းစား (သို့) လုပ်ဆောင်မှုသည်မည်သည့်နေရာတွင်နေထိုင်သောဖိုင်တွင်အဓိပ္ပါယ်နှင့်ကိုက်ညီကြောင်းသေချာပါစေ။ ဖိုင်လမ်းကြောင်းသို့မဟုတ် namespace လမ်းကြောင်းတွင်မကိုက်ညီပါကဤအမှားသည်ဖြစ်ပေါ်နိုင်သည်။

4.2 autoloading ကိုအသုံးပြုခြင်း

လူတန်းစားဖိုင်တစ်ခုစီအပါအ 0 င်လက်ဖြင့်ရှောင်ရှားရန်, class file ကိုအလိုအလျောက်ဖွင့်ရန် autooloading ယန္တရားကိုသင်အသုံးပြုနိုင်သည်။ အတန်းကိုမတင်ပါက PHP သည်လိုအပ်သော Autoloader function မှတဆင့် PHP သည်လိုအပ်သောလူတန်းစားဖိုင်ကိုအလိုအလျောက်ဖွင့်လိမ့်မည်။ ဤတွင် autoloading အသုံးပြုခြင်း၏ဥပမာတစ်ခုမှာ -

// ထုံးစံအတိုင်း autoloader function ကို my_autoloader ($ အတန်းအစား) {
    __Dir__ ပါဝင်သည်။ '/' ။ strip_replace ('\\', '/', $ class) ။ '.php';
}

// မှတ်ပုံတင်ခြင်း spl_autoload_register ('my_autoloader')

// namespace အတွက်အတန်း $ MyClass = အသစ် My_Namespace \ MyClass ();
    

ဤဥပမာတွင်ကျွန်ုပ်တို့သည်အတန်းအစားကို My_Namespace ရှိအတန်းအစားကိုအလိုအလျောက်ဖွင့်သည့် my_autoloader function ကိုသတ်မှတ်သည်။

4.3 ပရိုဂရမ်ကို command line ကို သုံး. အသုံးပြုခြင်း

PHP ပရိုဂရမ်တစ်ခုကို command line မှ run နေပါက PHP သည် class files များကိုမှန်ကန်စွာဖွင့်နိုင်ရန်အတွက်သင်၏သတ်မှတ်ချက်ကိုသတ်မှတ်ရန်လိုအပ်လိမ့်မည်။ ပရိုဂရမ်ကိုဖွင့်ရန်အောက်ပါ command ကိုသုံးနိုင်သည်။

PHP -path = / Path / To / My_Program.php တို့ပါဝင်သည်
    

ဤ command တွင် PHP သည် My_Namespace namespace ရှိအတန်းဖိုင်များကိုရှာဖွေနိုင်ရန်အတွက် A -D parameter ကို အသုံးပြု. ထည့်သွင်းထားသည်။

အကျဉ်းချုပ်

PHP Development တွင် "သတ်မှတ်ထားသော namespace မတွေ့ပါ" အမှားကိုကြုံတွေ့ရသည့်အခါ၎င်းသည် autooloading ယန္တရားကို အသုံးပြု. Namespace definition ကိုစစ်ဆေးခြင်းဖြင့်၎င်းကိုဖြေရှင်းနိုင်သည်။ မှန်ကန်သောအမည်များကိုကျွမ်းကျင်ပိုင်ခွင့်ကိုကျွမ်းကျင်ပိုင်ခွင့်ကိုကျွမ်းကျင်စွာပ conflicts ိပက်ခများပ conflicts ိပက်ခများပ conflicts ိပက်ခများနှင့် PHP စီမံကိန်းဖွံ့ဖြိုးတိုးတက်မှု၏ထိရောက်မှုနှင့်တည်ငြိမ်မှုကိုတိုးတက်စေသည်။