PHP တွင် SPP တွင် Spl_autoload_register သည် Autoload functions များကိုပုံမှန်အားဖြင့်မှတ်ပုံတင်ခြင်းအားဖြင့်မှန်ကန်သောယန္တရားတစ်ခုဖြစ်ပြီး Spl_autoload_Unregister ကို ဤမှတ်ပုံတင်ထားသော loader များကိုဖယ်ရှားရန်အသုံးပြုသည်။ သို့သော် spl_autoload_Unregister ကို မှားယွင်းစွာအသုံးပြုခြင်းသည်ကြီးမားသောပြ problems နာများကိုဖြစ်ပေါ်စေနိုင်သည်။
ဤဆောင်းပါးသည် SPL_Autoload_Unregister ကို အသုံးပြု. ဖယ်ရှားရန်မဖယ်ရှားသင့်သည့် loader များကိုဂရုတစိုက်ဖော်ထုတ်ရန်နှင့်ရှောင်ရှားရန်ရှင်းပြပါမည်။
SPL_Autoload_UnRegister ကို မသုံးမီစနစ်တွင်မှတ်ပုံတင်နိုင်သော loader အမျိုးအစားများကိုကျွန်ုပ်တို့ပထမ ဦး ဆုံးနားလည်ရမည်။
အမည်မသိလုပ်ဆောင်ချက်များ - အနီးကပ်ပိတ်ထားသော loader များကို function name များကိုနှိုင်းယှဉ်ရုံဖြင့်ဖော်ထုတ်။ မရပါ။
အမည်ရှိသည့်လုပ်ဆောင်ချက်များကို / နည်းလမ်းများ - များသောအားဖြင့်စီမံကိန်းတွင် Provass :: Load " ကဲ့သို့သောစီမံကိန်းတွင်မှတ်ပုံတင်ထားသော loader တစ် ဦး ။
Framework / Composer Autoloader - ဤ 0 န်ဆောင်မှုများကိုများသောအားဖြင့်ပြင်ပစာကြည့်တိုက်များ (သို့) အလိုအလျောက်ထုတ်ပေးသည်။
SPL_AUTOLOAD_FRIESS ကို အသုံးပြု. လက်ရှိ loader အားလုံးကိုစာရင်းပြုစုရန်နှင့်ပြန်လာခြင်းသည်ခင်းကျင်းခြင်းဖြစ်သည်။
$autoloaders = spl_autoload_functions();
print_r($autoloaders);
output ကိုဤကဲ့သို့သောပုံကိုကြည့်ရှုလိမ့်မည်:
Array
(
[0] => Array
(
[0] => Composer\Autoload\ClassLoader Object
[1] => loadClass
)
[1] => 'my_autoloader_function'
)
ဤအဆင့်သည်အလွန်အရေးကြီးသည်။ မည်သည့် 0 စီး 0 ယ်သူများကိုမူဘောင်သို့မဟုတ်စာကြည့်တိုက်များကိုယ်တိုင်မှတ်ပုံတင်ထားကြောင်းခွဲခြားသိမြင်ရန်ကူညီနိုင်သည်။
သင်ကိုယ်တိုင်မှတ်ပုံတင်ထားသော 0 န်ဆောင်မှုများကိုသာဖယ်ရှားလိုပါကသင်၏ကိုယ်ပိုင် 0 န်ဆောင်မှုများကိုသတိရှိရှိစီမံသင့်သည်,
function myCustomLoader($class) {
// logic loading
}
spl_autoload_register('myCustomLoader');
// သင်အနာဂတ်ကိုဖျက်သိမ်းရန်လိုအပ်ပါက,အတိအလင်းကထဲကထဲက log နိုင်ပါတယ်
spl_autoload_unregister('myCustomLoader');
အောက်ပါတို့ကိုရှောင်ပါ။
$loaders = spl_autoload_functions();
foreach ($loaders as $loader) {
spl_autoload_unregister($loader);
}
ဤအရေးအသားသည် System LoaderS အပါအ 0 င် 0 န်ထမ်းအားလုံးကိုဖယ်ရှားပေးသည်။
0 န်ဆောင်မှုပေးသူများကိုအရာဝတ်ထုနည်းဖြင့်ဖယ်ရှားခြင်းရှိမရှိကိုသင်ပုံမှန်ဆုံးဖြတ်ရန်လိုသည်ဆိုပါကအရာဝတ်ထု၏အတန်းအမည်ကိုအကဲဖြတ်ခြင်းဖြင့်သူတို့ကိုဖယ်ထုတ်နိုင်သည်။
$loaders = spl_autoload_functions();
foreach ($loaders as $loader) {
if (is_array($loader) && is_object($loader[0])) {
$class = get_class($loader[0]);
if ($class === 'Composer\Autoload\ClassLoader') {
// မဖယ်ရှားပါနှင့် Composer မင်းလုပ်
continue;
}
}
spl_autoload_unregister($loader);
}
မှားယွင်းစွာဖျက်ခြင်းကိုရှောင်ရှားရန်အခြား 0 န်ဆောင်မှုများကိုဖျက်ခြင်းကိုရှောင်ရှားရန်အကောင်းဆုံးနည်းမှာ "သင်ကိုယ်တိုင်မှတ်ပုံတင်ထားသောဝန်များကိုသာဖယ်ရှားခြင်း" ကို "သင်ကိုယ်တိုင်သာလျှင်သင်ကိုယ်တိုင်ကိုသာဖယ်ရှားခြင်း" ပြုလုပ်ရန်ဖြစ်သည်။ အောက်ပါစီမံခန့်ခွဲမှုနည်းလမ်းများကိုအသုံးပြုနိုင်သည်။
$myLoaders = [];
$myLoaders[] = function ($class) {
require __DIR__ . '/lib/' . $class . '.php';
};
foreach ($myLoaders as $loader) {
spl_autoload_register($loader);
}
// ထွက် logging အခါ
foreach ($myLoaders as $loader) {
spl_autoload_unregister($loader);
}
spl_autoload_Unregise ဆိုသည်မှာ developer များပိုမိုပြောင်းလွယ်ပြင်လွယ်ပေးသော "နှစ်ဖက်သန်ဓား" ဖြစ်သည်။ ၎င်းကိုအသုံးပြုသောအခါသင်မည်သည့် loader ကိုသင်ပယ်ဖျက်မည်ကိုသေချာအောင်လုပ်ပါ။ သင်ကိုယ်တိုင်မှတ်ပုံတင်လျှင်အကောင်းဆုံးဖြစ်သည်။ System သို့မဟုတ် Framework 0 န်ဆောင်မှုများအတွက်တေးရေးဆရာမှတဆင့် 0 န်ဆောင်မှုပေးသည့်အတန်းများကဲ့သို့၎င်းကိုအလွယ်တကူဖယ်ရှားသင့်သည်။
ရှင်းရှင်းလင်းလင်း, ကြည်လင်ပြတ်သားပြီးထိန်းချုပ်နိုင်သည့်အလိုအလျောက်ဝန်စီမံခန့်ခွဲမှုသည်ဓာတ်လှေကား application များတည်ဆောက်ခြင်း၏အုတ်မြစ်ဖြစ်သည်ကိုအမြဲတမ်းသတိရပါ။
Composer Loader နှင့်ပတ်သက်သည့်အသေးစိတ်အချက်အလက်များအတွက် ကျေးဇူးပြု. ၎င်း၏တရားဝင်စာရွက်စာတမ်းများ (သို့) အရင်းအမြစ် Code: https://gitbox.net/composer ကိုကိုးကားပါ