PHP တွင်ကုဒ်နံပါတ်ရေးသားသည့်အခါ "သတ်မှတ်ထားသော namespace ကိုမတွေ့ရသေးသော" ဟုမှားယွင်းစွာကြုံတွေ့ရနိုင်သည်။ ဆိုလိုသည်မှာ PHP စကားပြန်သည်လူတန်းစားသို့မဟုတ်လုပ်ဆောင်မှုသည်နေထိုင်သောနေရာကိုအသိအမှတ်မပြုနိုင်ပါ။ ဤဆောင်းပါးသည်ဤပြ problem နာကိုမည်သို့ဖြေရှင်းရမည်ကိုသင်မိတ်ဆက်ပေးပါမည်။
PHP စီမံကိန်းများအတွက်ဘ 0 ၏အမည်များပ conflicts ိပက်ခများအပေါ်ပ conflicts ိပက်ခများကိုရှောင်ရှားရန်လုပ်ငန်းဆောင်တာများ, စီမံကိန်းတစ်ခုတွင် Namespace ကိုအသုံးပြုခြင်းသည်အမည်နှင့်တူညီသောအမည်နှင့်တူညီသောအမည်များကိုမတူညီသောအမည်များကိုပိုင်ခွင့်ပြုသည်, ထို့ကြောင့်နာမတော်ပ conflicts ိပက်ခများကိုရှောင်ရှားရန်ဖြစ်သည်။
PHP တွင် Namespace သော့ချက်စာလုံးကို namespace ကိုသတ်မှတ်ရန်အသုံးပြုနိုင်သည်။ ဥပမာအားဖြင့်:
my_namespace namespace; MyClass အတန်း // ... Class Content}} my_function () {) function ကို function // ... function content}}
အထက်ဖော်ပြပါကုဒ်များတွင် My_Namesace ဟုခေါ်သော namespace တစ်ခုကိုသတ်မှတ်ပြီး MyCrSime Class နှင့် My_FUnction function ကိုဖန်တီးသည်။
လူတန်းစားတစ်ခုသို့မဟုတ်လုပ်ဆောင်ချက်တစ်ခုကို namespace ထဲ၌ခေါ်ဆိုသောအခါ namespace လမ်းကြောင်းကိုသုံးရန်လိုအပ်သည်။ ဥပမာအားဖြင့်:
MyClass = My_Namespace \ MyClass (); my_namespace \ my_function ();
ဤတွင်ကျွန်ုပ်တို့သည် My_Funge လမ်းကြောင်းမှတဆင့် MyCamStace ရှိ MyCamStime တွင် MyCamEDDACE တွင်ချက်ချင်းပဲ My_FUNIction function ကိုခေါ်သည်။
အမှားတစ်ခု "သတ်မှတ်ထားသော namespace မတွေ့ပါ" ပေါ်လာသည့်အခါအောက်ပါတို့နှင့်ဆင်တူသောအမှားအယွင်းတစ်ခုတွေ့ရလေ့ရှိသည်။
Fatal Error: uncraff-rouds: Class 'My_Namespace \ MyClass' မတွေ့ပါ
ဤအမှားက PHP သည်အောက်ပါအကြောင်းပြချက်များကြောင့်ဖြစ်ရခြင်းကြောင့်သတ်မှတ်ထားသောသတ်မှတ်ထားသော namespace သို့မဟုတ် class ကိုရှာမတွေ့နိုင်ကြောင်းဖော်ပြသည်။
ပထမ ဦး ဆုံး namespace ကိုမှန်ကန်စွာသတ်မှတ်ခြင်းရှိမရှိစစ်ဆေးပါ။ အဆိုပါ namespace ၏အဓိပ္ပါယ်သည်အမှန်တကယ်လူတန်းစား (သို့) လုပ်ဆောင်မှုသည်မည်သည့်နေရာတွင်နေထိုင်သောဖိုင်တွင်အဓိပ္ပါယ်နှင့်ကိုက်ညီကြောင်းသေချာပါစေ။ ဖိုင်လမ်းကြောင်းသို့မဟုတ် namespace လမ်းကြောင်းတွင်မကိုက်ညီပါကဤအမှားသည်ဖြစ်ပေါ်နိုင်သည်။
လူတန်းစားဖိုင်တစ်ခုစီအပါအ 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 ကိုသတ်မှတ်သည်။
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 စီမံကိန်းဖွံ့ဖြိုးတိုးတက်မှု၏ထိရောက်မှုနှင့်တည်ငြိမ်မှုကိုတိုးတက်စေသည်။