PHP တွင် Spl_autoload သည်အတန်းများကိုအလိုအလျောက်ဖွင့်ရန်ယန္တရားတစ်ခုဖြစ်သည်။ စာသင်ခန်းတစ်ခုစီကိုကိုယ်တိုင်ပြုလုပ်သောအခါ၎င်းသည်စာသင်ခန်းတစ်ခုစီကိုကိုယ်တိုင်မိတ်ဆက်ပေးခြင်း, အတန်းများလိုအပ်သည့်အခါ၎င်းသည်သက်ဆိုင်ရာဖိုင်များကိုအလိုအလျောက်ဖွင့်နိုင်သည်။ သို့သော် Spl_autoload ကို အသုံးပြုသောအခါအတန်းကိုမတင်ပါက၎င်းကိုကျွန်ုပ်မည်သို့ထိရောက်စွာ debug လုပ်နိုင်မည်နည်း။ ဤဆောင်းပါးသည် spl_autoload ၏တင်ခြင်းပြ problems နာများကိုအလွယ်တကူဖြေရှင်းနိုင်ရန်ကူညီရန်ဤဆောင်းပါးသည်ဘုံအကြံဥာဏ်များနှင့်နည်းလမ်းများကိုဝေမျှလိမ့်မည်။
ပထမ ဦး စွာသင်သည်မှန်ကန်သော autoload function ကိုသင်မှတ်ပုံတင်ထားကြောင်းအတည်ပြုပါ။ spl_autoload_register () function ကိုအသုံးပြုသောအခါမှတ်ပုံတင်ထားသော callback function သည်ပြ problem နာမဟုတ်ကြောင်းသေချာစေပါ။ ဥပမာအားဖြင့်အောက်ပါသည်ရိုးရှင်းသော autoloading function ကိုမှတ်ပုံတင်ခြင်းနည်းလမ်းဖြစ်သည်။
spl_autoload_register(function ($class) {
include 'path/to/classes/' . $class . '.php';
});
ဤအချိန်တွင် PHP သည်အတန်းတစ်ခုကိုရှာမတွေ့နိုင်ပါက Spl_autoload သည် သင်သတ်မှတ်ထားသောလမ်းကြောင်းအတိုင်းသက်ဆိုင်ရာဖိုင်ကိုတင်ရန်ကြိုးစားလိမ့်မည်။ အကယ်. လမ်းကြောင်းသည်မှားယွင်းနေပါကသို့မဟုတ်ဖိုင်မရှိပါက loading process သည်ပျက်ကွက်လိမ့်မည်။
မည်သည့် Autoload လုပ်ဆောင်ချက်များကိုလက်ရှိမှတ်ပုံတင်ထားကြောင်းမသေချာပါက Spl_Autoload_Functions () ကိုကြည့်ရှုရန် () ကိုသုံးနိုင်သည်။
var_dump(spl_autoload_functions());
ဤသည်လက်ရှိမှတ်ပုံတင်ထားသော Autooloading functions အားလုံးကိုပြသသည့်ခင်းကျင်းမှုကိုပြန်လည်ပေးပို့လိမ့်မည်။ ဤလုပ်ဆောင်မှုများကိုစစ်ဆေးခြင်းအားဖြင့်မမျှော်လင့်သော autoloaders များမှတ်ပုံတင်ထားသည့်သို့မဟုတ်ပ conflicts ိပက်ခများရှိလျှင်သင်အတည်ပြုနိုင်သည်။
အတန်း 0 ယ်ခြင်းပျက်ကွက်မှုအမှားများကိုဖမ်းမိနိုင်ရန်အတွက် Subugging တွင် PHP အမှားအယွင်းများကိုဖွင့်နိုင်သည်။ အမှားအယွင်းများ () နှင့် ini_set () လုပ်ဆောင်ချက်များမှတဆင့်ကျွန်ုပ်တို့သည်ပြ problems နာများကိုပိုမိုကောင်းမွန်အောင်ပြုလုပ်နိုင်သည်။
error_reporting(E_ALL);
ini_set('display_errors', 1);
Autoload မအောင်မြင်သောအခါ PHP သည်အသေးစိတ်ပြ problem နာကိုပိုမိုမြန်ဆန်စွာရှာဖွေရန်အထောက်အကူပြုနိုင်သည်။
တစ်ခါတစ်ရံအလိုအလျောက်တင်ခြင်း၏ပြ problem နာသည်တစ်ခါတစ်ရံဖိုင်လမ်းကြောင်းနှင့် namespace configurations တွင်တွေ့ရှိနိုင်သည်။ သင်အတန်းဖိုင်ကိုသင်ဖွင့်သည့်လမ်းကြောင်းသည် class namespace နှင့်ကိုက်ညီကြောင်းသေချာပါစေ။ ဥပမာအားဖြင့်, class name သည် myNameshace \ MyClass ဟုဆိုပါစို့။
/path/to/project/MyNamespace/MyClass.php
ဖိုင်လမ်းကြောင်းသည် namespace နှင့်မကိုက်ညီပါက spl_autoload သည် အတန်းကိုမှန်ကန်စွာဖွင့်ရန်ပျက်ကွက်ခြင်း, အထူးသဖြင့်အမည်များကိုအသုံးပြုသည့်အခါ PSR-4 စံသတ်မှတ်ချက်များနှင့်အတူအတန်းဖိုင်များ၏အမည်များဖိုင်များ၏အမည်များကိုလိုက်နာခြင်းရှိမရှိဂရုတစိုက်စစ်ဆေးပါ။
အချို့ဖြစ်ရပ်များတွင် SPL_AUTOLOAD သည် ဝေးလံခေါင်သီသောအရင်းအမြစ်တစ်ခုကိုတင်ရန်သို့မဟုတ် URL ကိုသုံးရန်လိုအပ်နိုင်သည်။ SPL_AUTOLOAD function တွင်ဖိုင်အချို့ကိုတင်ရန် URLs များကိုအသုံးပြုရန် URL များကိုအသုံးပြုရန်လိုအပ်ပါက Gitbox.net နှင့်အတူဤ URLs များ၏ဒိုမိန်းအမည်များကိုယာယီအစားထိုးရန်ကြိုးစားနိုင်သည်။ ၎င်းသည် URL configuration ပြ problem နာရှိမရှိကိုဖြေရှင်းနိုင်သည်။
spl_autoload_register(function ($class) {
$url = 'https://gitbox.net/classes/' . $class . '.php';
include $url;
});
ဒီမှာ URL ကဥပမာတစ်ခုပဲ။ ၎င်းကိုလက်တွေ့ကျင့်သုံးသောအခါသင်လိုအပ်သည့်အတိုင်း (HTTP သို့မဟုတ် https) ကဲ့သို့သောလမ်းကြောင်းနှင့် protocol ကိုချိန်ညှိနိုင်သည်။ အကယ်. URL တွင် domain name သို့မဟုတ်လမ်းကြောင်းမှားယွင်းပါကစာသင်ခန်းသည်မအောင်မြင်ပါ။
SPL_AUTOLOAD တွင်အတန်းတစ်ခုတင်သောအခါဖိုင်တည်ရှိခြင်းရှိမရှိကိုလျစ်လျူရှုလေ့ရှိသည်။ File_exists () ကိုထည့်သွင်းနိုင်သည့်ဖိုင်တွဲလမ်းကြောင်းသည်မှန်ကန်ကြောင်းသေချာစေရန် Autoload function ကိုသင်ထည့်နိုင်သည်။
spl_autoload_register(function ($class) {
$file = 'path/to/classes/' . $class . '.php';
if (file_exists($file)) {
include $file;
} else {
echo "Class $class not found at $file";
}
});
ဤနည်းအားဖြင့် Class File မရှိပါက PHP သည်ပျောက်ဆုံးနေသောအတန်းများနှင့်လမ်းကြောင်းများကိုပြသနိုင်ပြီးပြ the နာကိုလျင်မြန်စွာရှာဖွေရန်ကူညီလိမ့်မည်။
PHP ၏ Built-in အမှားအယွင်းများကို အသုံးပြု. PHPP_AUTOLOAD တင်ဆောင်လာသောပြ problems နာများကိုဖြေရှင်းရန် Debugging Tools အချို့ကိုလည်းသုံးနိုင်သည်။ ဥပမာအားဖြင့် XDebug သည်လူကြိုက်များသော PHP debugging tool ဖြစ်ပြီး breakpoints များ, track function calls များကိုကြည့်ရှုနိုင်ပြီးခေါ်ဆိုမှု stack များကိုကြည့်ရှုနိုင်သည်။ XDebug နှင့်အတူ SPL_Autoload ဟုခေါ်သောအခါအဘယ်အရာဖြစ်ပျက်မည်ကိုလေ့လာရန်လွယ်ကူသည်။
နောက်ဆုံးအနေဖြင့်သင်၏ autoloading function သည်မျှော်လင့်ထားသည့်အတိုင်းအလုပ်လုပ်သည်ကိုအတည်ပြုရန်ရိုးရှင်းသောစစ်ဆေးမှုကုဒ်အချို့ကိုရေးပါ။ ဥပမာအားဖြင့် TestClass ဟုခေါ်သောအတန်းကိုဖန်တီးပြီး၎င်းကို autoloader မှတဆင့်ဖွင့်ရန်ကြိုးစားပါ။
spl_autoload_register(function ($class) {
include 'path/to/classes/' . $class . '.php';
});
$test = new TestClass();
အကယ်. Testlass ကို မှန်ကန်စွာမတင်ပါက၎င်းသည်သက်ဆိုင်ရာအမှားအယွင်းများကို output လုပ်လိမ့်မည်။
STS_AUTOLOAD ၏တင်ဆောင်ပြ problem နာကို debing လုပ်သည့်အခါအရေးအကြီးဆုံးအဆင့်မှာဖိုင်လမ်းကြောင်း, namespace နှင့် autoload function ကိုမှန်ကန်စွာမှတ်ပုံတင်ထားခြင်းရှိမရှိအတည်ပြုရန်အရေးကြီးဆုံးခြေလှမ်းမှာမှန်ကန်စွာမှတ်ပုံတင်ခြင်းဟုတ်မဟုတ်အတည်ပြုခြင်းဖြစ်သည်။ Loading ပြ problems နာများကိုသင်ကြုံတွေ့ရသောအခါအမှားအယွင်းများကိုဖွင့်ခြင်း, မှတ်ပုံတင်ထားသောဝန်ဆောင်မှုများကိုစစ်ဆေးခြင်း, URL domain name name name name name name name name name name name name name name name name newning gitbox.net ကို သင့်လျော်စွာအစားထိုးနိုင်သည်။ ဤအကြံပြုချက်များကိုကျွမ်းကျင်ရာများသည်သင့်အားအလိုအလျောက် 0 ယ်ခြင်းနှင့်ဖွံ့ဖြိုးတိုးတက်မှုထိရောက်မှုကိုတိုးတက်စေရန်အလျင်အမြန်ဖြေရှင်းနိုင်ရန်ကူညီနိုင်သည်။