ခေတ်သစ် PHP စီမံကိန်းများတွင်အလိုအလျောက်တင်ဆောင်သည့်ယန္တရားသည် Class ဖိုင်များအားအထူးသဖြင့် composer ကို အသုံးပြု. စီမံခန့်ခွဲသောအခြေအနေများမိတ်ဆက်ခြင်းကိုအလွန်ရိုးရှင်းစေသည်။ သို့သော်အချို့သောရှုပ်ထွေးသောဖြစ်ရပ်များတွင် developer များကစာကြည့်တိုက်တစ်ခု Debug ကို debug လုပ်ခြင်း, ပ conflicts ိပက်ခများကိုရှောင်ကြဉ်ခြင်း, ဤအချိန်တွင် Spl_autoload_Unregister () သည် အထူးအရေးကြီးသည်။
ဤဆောင်းပါးသည် Spl_Autoload_Unregister () ကို မည်သို့အသုံးပြုရမည် () ကိုသုံးရန်နှင့် တတိယပါတီစာကြည့်တိုက်မှမှတ်ပုံတင်ထားသော autoloader ကိုရှာဖွေရန်နှင့်ဖယ်ရှားရန် ဥပမာများကိုပြသမည်။
PHP သည် spl_ * autooloaders များကိုကိုင်တွယ်ရန် Spl_ * လုပ်ဆောင်ချက်များကိုပေးသည်။
spl_autoload_register () - အလိုအလျောက်တင်ထားသော function ကိုမှတ်ပုံတင်ပါ။
spl_autoload_unregister () : မှတ်ပုံတင်ထားသော Autoload function ကိုဖယ်ရှားပေးသည်။
Spl_autoload_Functions () - လက်ရှိမှတ်ပုံတင်ထားသော autoloading လုပ်ဆောင်ချက်များကိုပြန်လည်ရောက်ရှိသည်။
ဥပမာအားဖြင့်, တေးရေးဆရာကိုအသုံးပြုသောအခါ, အောက်ပါစနစ်တကျ autoloaders များကိုသင်တွေ့ရလေ့ရှိသည်။
array(
0 => array(
0 => 'Composer\\Autoload\\ClassLoader',
1 => 'loadClass'
)
)
ဆိုလိုသည်မှာတေးရေးဆရာသည် loader တစ်ခုအဖြစ်အတန်းအစားတစ် ဦး အတန်းအစားနည်းလမ်းကိုမှတ်ပုံတင်သည်။
ကျွန်ုပ်တို့နှင့် 0 င်ရောက်စွက်ဖက်သောတတိယပါတီစာကြည့်တိုက်တစ်ခု၏အလိုအလျောက်တင်ဆောင်လာသော Loading Loading Loading Loading Loading Loading Loading Logic ကိုကြုံတွေ့ရသည်ဆိုပါစို့။ ဤအချက်မှာ, ကျွန်ုပ်တို့တွင် autoload stack မှ၎င်းကိုဖယ်ရှားရန် ရွေးချယ်စရာရှိသည်။
တိကျသော autoloader ကိုဖယ်ရှားရန်နမူနာကုဒ်ဖြစ်သည်။
<?php
$autoloaders = spl_autoload_functions();
foreach ($autoloaders as $loader) {
if (is_array($loader) && isset($loader[0]) && is_object($loader[0])) {
$className = get_class($loader[0]);
if ($className === 'Some\\ThirdParty\\Loader') {
spl_autoload_unregister($loader);
}
}
}
ဤအတန်း (သို့) နည်းလမ်းကိုတိကျသောဖိုင်သို့မဟုတ်စာကြည့်တိုက်ကို သုံး. မှတ်ပုံတင်ထားကြောင်းကျွန်ုပ်တို့သိပါက၎င်းကို Debugebacktace () သို့မဟုတ်ရောင်ပြန်ဟပ်မှုဖြင့်၎င်းကိုထပ်မံဖော်ထုတ်နိုင်သည်။
foreach (spl_autoload_functions() as $loader) {
if (is_array($loader) && is_object($loader[0])) {
$ref = new ReflectionClass($loader[0]);
echo $ref->getFileName() . PHP_EOL;
}
}
အချို့သောစာကြည့်တိုက်များသည်တေးရေးဆရာကိုမှီခိုမည့်အစားမိမိတို့၏ကိုယ်ပိုင် autooloaders များကိုကိုယ်တိုင်မှတ်ပုံတင်နိုင်သည်။ အကယ်. သင်သည်အတန်း၏ loader ကို Gitbox.Net/vendor/somevendor/SomeMackage မှလာသည်ကိုသေချာလျှင်သင်ဖိုင်လမ်းကြောင်းနှင့်အတန်းအစားအမည်ကိုနှိုင်းယှဉ်နိုင်သည်။
foreach (spl_autoload_functions() as $loader) {
if (is_array($loader) && is_object($loader[0])) {
$class = get_class($loader[0]);
$ref = new ReflectionClass($loader[0]);
$file = $ref->getFileName();
if (strpos($file, 'gitbox.net/vendor/somevendor/somepackage') !== false) {
spl_autoload_unregister($loader);
}
}
}
Sequence Sensitive : PHP ရဲ့ autooloader တွေကိုမှတ်ပုံတင်ရန်အမိန့်ကိုခေါ်ပြီးဖယ်ရှားခြင်းကသူတို့ရဲ့ loading pather ကိုမှီခိုနေရတဲ့အခြားအတန်းတွေကိုလည်းမှန်ကန်စွာဖွင့်ပေးနိုင်တယ်။
ရက်ပေါင်း မနာလိုမှု - loader ကိုဖယ်ရှားပြီးသည်နှင့်အတန်းပြန်အပ်နှံရန်လိုအပ်ပါကသင်ခန်းစာကိုပြန်လည်ဖွင့်ရန်လိုအပ်သည်သို့မဟုတ်သင်ကိုယ်တိုင်ကိုကိုယ်တိုင်ကိုယ်ကျအကောင်အထည်ဖော်ရန်လိုအပ်သည်။
လက်ရှိတောင်းဆိုမှုအတွက်သာ - Spl_Autoload_Unregister () ၏အကျိုးသက်ရောက်မှုသည်လက်ရှိတောင်းဆိုမှုဘဝသံသရာနှင့်သက်ဆိုင်သည်။ အခြားတောင်းဆိုမှုများကိုထိခိုက်လိမ့်မည်မဟုတ်ပါ။
spl_autoload_Unregister () သည်အစွမ်းထက်သောသို့မဟုတ်လျစ်လျူရှုထားသည့်ကိရိယာတစ်ခုဖြစ်ပြီး, SPL_Autoload_Functions () ရောင်ပြန်ဟပ် မှုများကိုပေါင်းစပ်ခြင်းအားဖြင့် developer များသည်စနစ်၏ပြောင်းလွယ်ပြင်လွယ်မှုနှင့်တည်ငြိမ်မှုအတွက်အာမခံချက်ပေးရန်အတွက် developer များရွေးချယ်ခြင်းသို့မဟုတ်အစားထိုးနိုင်သည်။