PHP ဖွံ့ဖြိုးတိုးတက်မှုတွင်အမှားအယွင်းများကိုကြုံတွေ့ရလေ့ရှိသည်။ ၎င်းတို့အနက် "အတန်းကိုအကြိမ်ကြိမ်ကြေငြာခြင်းကိုမကြေညာနိုင်" ဟုမပြောနိုင်ပါ။ ဤအမှားသည်ရိုးရှင်းသည်ဟုထင်သော်လည်းအချိန်တန်လျှင်မလုပ်ဆောင်လျှင်၎င်းသည် Code Execution ကိုပြတ်တောက်စေလိမ့်မည်။ ဤဆောင်းပါးသည်ဤအမှား၏အကြောင်းရင်းများနှင့်ပြ problems နာများကိုအလျင်အမြန်ဖြေရှင်းနိုင်ရန်ကူညီရန်ထိရောက်သောဖြေရှင်းနည်းသုံးခုကိုမိတ်ဆက်ပေးလိမ့်မည်။
PHP Code တွင်တူညီသောအတန်းအစားကိုအကြိမ်ပေါင်းများစွာသတ်မှတ်သည့်အခါ PHP သည် "အတန်းအစားကိုထပ်ခါတလဲလဲကြေငြာခြင်းမပြုနိုင်" သောဆိုးဝါးသောအမှားကိုဖယ်ရှားပေးလိမ့်မည်။ PHP သည်တူညီသောအမည်နှင့်တူညီသောပြေးလွှာကိုထပ်ခါတလဲလဲဖော်ပြရန်ခွင့်မပြုပါ။ ဤတွင်ရိုးရှင်းသောဥပမာတစ်ခုဖြစ်သည်။
<?php class MyClass { // Some code... } class MyClass { // Another code... } ?>
အထက်ပါကုဒ်ကိုဖွင့်သောအခါ, အောက်ပါကဲ့သို့သောအမှားပေါ်လာလိမ့်မည်။
Fatal Error: အတန်းနံပါတ်ပေါ်ရှိဖိုင်အမည်ရှိလူတန်းစား MyClass ကိုမ redeclare မ redeclare
စာသင်ခန်းမသတ်မှတ်ခင်အတန်းအစားရှိပြီးသားရှိမရှိဆုံးဖြတ်ရန် Class_exists () function ကိုသုံးပါ။ ၎င်းကိုမတည်ရှိသည့်အခါ၎င်းကိုထပ်ခါတလဲလဲကြေငြာခြင်းကိုရှောင်ကြဉ်ပါလိမ့်မည်။
<?php if (!class_exists('MyClass')) { class MyClass { // Some code... } } ?>
လိုအပ်ချက်များ (သို့) contam_once မှဖိုင်များကိုမိတ်ဆက်ပေးခြင်းသည်တူညီသောဖိုင်ကိုတစ်ကြိမ်သာဖွင့်ထားပြီးပုံမှန်အတန်းများထပ်ခါတလဲလဲလုပ်ခြင်းကိုရှောင်ရှားရန်လိုအပ်သည်။
<?php require_once 'myfile.php'; class MyClass { // Some code... } ?>
အကယ်. ဖိုင်သည် MyFILE.PHP ကိုတင်ပါက PHP သည် ထပ်မံ. တင်. အတန်းကိုထပ်ခါတလဲလဲကြေငြာခြင်းမှတားဆီးလိမ့်မည်မဟုတ်ပါ။
PHP 5.3 သည် Namespace function ကိုမိတ်ဆက်ပေးသည်။
<?php namespace MyNamespace; class MyClass { // Some code... } ?>
Namespace မှတစ်ဆင့်အတန်းအစားအမည်နှင့်အတူတူပင်လျှင်ပင်ကြေငြာချက်များနှင့်ပ conflicts ိပက်ခများကိုထပ်ခါတလဲလဲမရရှိနိုင်ကြောင်းသေချာစေသည်။
"အတန်းအစားများကိုထပ်ခါတလဲလဲကြေညာရန်မတတ်နိုင်" သောအမှားတစ်ခုကြုံတွေ့ရသောအခါ၎င်းကိုဖြေရှင်းရန်အောက်ပါနည်းလမ်းများကိုရွေးချယ်နိုင်သည်။
အထက်ပါနည်းလမ်းများ၏ဆင်ခြင်တုံတရားကိုဆင်ခြင်တုံတရားအသုံးပြုမှုသည်ထပ်ခါတလဲလဲအတန်းအစားကြေငြာချက်များပြ problem နာကိုထိရောက်စွာရှောင်ရှားနိုင်ပြီး Code ၏ထိန်းသိမ်းမှုနှင့်တည်ငြိမ်မှုကိုတိုးတက်စေနိုင်သည်။
ဤဆောင်းပါးသည် PHP developer များကဤအမှားကိုချောချောမွေ့မွေ့ဖြေရှင်းနိုင်ရန်နှင့်ဖွံ့ဖြိုးတိုးတက်မှုထိရောက်မှုကိုတိုးတက်စေရန်ကူညီနိုင်သည်ဟုကျွန်ုပ်မျှော်လင့်ပါသည်။