လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> spl_autoload_unregister ကိုဘယ်လိုရှောင်ရှားရမလဲ

spl_autoload_unregister ကိုဘယ်လိုရှောင်ရှားရမလဲ

gitbox 2025-05-26

PHP တွင် SPP တွင် Spl_autoload_register သည် Autoload functions များကိုပုံမှန်အားဖြင့်မှတ်ပုံတင်ခြင်းအားဖြင့်မှန်ကန်သောယန္တရားတစ်ခုဖြစ်ပြီး Spl_autoload_Unregister ကို ဤမှတ်ပုံတင်ထားသော loader များကိုဖယ်ရှားရန်အသုံးပြုသည်။ သို့သော် spl_autoload_Unregister ကို မှားယွင်းစွာအသုံးပြုခြင်းသည်ကြီးမားသောပြ problems နာများကိုဖြစ်ပေါ်စေနိုင်သည်။

ဤဆောင်းပါးသည် SPL_Autoload_Unregister ကို အသုံးပြု. ဖယ်ရှားရန်မဖယ်ရှားသင့်သည့် loader များကိုဂရုတစိုက်ဖော်ထုတ်ရန်နှင့်ရှောင်ရှားရန်ရှင်းပြပါမည်။

loader အမျိုးအစား

SPL_Autoload_UnRegister ကို မသုံးမီစနစ်တွင်မှတ်ပုံတင်နိုင်သော loader အမျိုးအစားများကိုကျွန်ုပ်တို့ပထမ ဦး ဆုံးနားလည်ရမည်။

  1. အမည်မသိလုပ်ဆောင်ချက်များ - အနီးကပ်ပိတ်ထားသော loader များကို function name များကိုနှိုင်းယှဉ်ရုံဖြင့်ဖော်ထုတ်။ မရပါ။

  2. အမည်ရှိသည့်လုပ်ဆောင်ချက်များကို / နည်းလမ်းများ - များသောအားဖြင့်စီမံကိန်းတွင် Provass :: Load " ကဲ့သို့သောစီမံကိန်းတွင်မှတ်ပုံတင်ထားသော loader တစ် ဦး ။

  3. Framework / Composer Autoloader - ဤ 0 န်ဆောင်မှုများကိုများသောအားဖြင့်ပြင်ပစာကြည့်တိုက်များ (သို့) အလိုအလျောက်ထုတ်ပေးသည်။

spl_autoload_Unregister ကို လုံခြုံစွာအသုံးပြုခြင်း

အဆင့် 1 - လက်ရှိမှတ်ပုံတင်ထားသော loader အားလုံးကိုကြည့်ပါ

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 ယ်သူများကိုမူဘောင်သို့မဟုတ်စာကြည့်တိုက်များကိုယ်တိုင်မှတ်ပုံတင်ထားကြောင်းခွဲခြားသိမြင်ရန်ကူညီနိုင်သည်။

အဆင့် 2: Custom Loader ကိုဖေါ်ထုတ်ပါ

သင်ကိုယ်တိုင်မှတ်ပုံတင်ထားသော 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 န်ထမ်းအားလုံးကိုဖယ်ရှားပေးသည်။

အဆင့် 3. အရာဝတ်ထုနည်းလမ်းကိုလုံခြုံရေးစစ်ဆေးမှုများပြုလုပ်ပါ

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);
}

အကြံပြုချက်များ - သင်၏ကိုယ်ပိုင် 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 ကိုကိုးကားပါ