လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> spl_autoload_unregister နှင့် spl_autoload_register အကြားခြားနားချက်ကဘာလဲ။ function နှိုင်းယှဉ်ခြင်းနှင့်အပြည့်အဝခွဲခြမ်းစိတ်ဖြာ

spl_autoload_unregister နှင့် spl_autoload_register အကြားခြားနားချက်ကဘာလဲ။ function နှိုင်းယှဉ်ခြင်းနှင့်အပြည့်အဝခွဲခြမ်းစိတ်ဖြာ

gitbox 2025-08-22

PHP တွင်အလိုအလျောက်တင်ခြင်းဆိုသည်မှာပရိုဂရမ်တစ်ခုသည်အတန်းတစ်ခုစီကိုအသုံးပြုရန်လိုအပ်သည့်အခါ PHP သည်အတန်း၏အဓိပ္ပါယ်ဖွင့်ဆိုချက်ကိုအလိုအလျောက်ဖွင့်လိမ့်မည်ဟုဆိုလိုသည်။ PHP သည် built-in autooloading ယန္တရားများကိုထောက်ပံ့ပေးသည်။ အသုံးအများဆုံးလုပ်ဆောင်ချက်နှစ်ခုမှာ spl_autoload_register နှင့် spl_autoload_Unregister တို့ဖြစ်သည်။ ဤလုပ်ဆောင်ချက်နှစ်ခုတွင်အလားတူအမည်များရှိသော်လည်း၎င်းတို့၏လုပ်ဆောင်ချက်များနှင့်အသုံးပြုမှုသည်အလွန်ကွဲပြားခြားနားသည်။ ဤဆောင်းပါးသည်၎င်းတို့၏လုပ်ဆောင်ချက်များနှင့်ကွဲပြားခြားနားမှုများကိုပိုမိုနားလည်စေရန်အတွက်ဤလုပ်ဆောင်ချက်နှစ်ခုကိုအသေးစိတ်လေ့လာပြီးခွဲခြမ်းစိတ်ဖြာပါလိမ့်မည်။

1 ။ spl_autoload_register ဆိုတာဘာလဲ။

SPP_Autoload_register သည် Autoloading လုပ်ဆောင်ချက်များကိုမှတ်ပုံတင်ရန် PHP တွင်စံသတ်မှတ်ချက်ဖြစ်သည်။ ဤလုပ်ဆောင်မှုမှတစ်ဆင့် developer များကအလိုအလျောက်တင်ထားသော callback function များကိုတစ်ခုသို့မဟုတ်တစ်ခုထက် ပို. သတ်မှတ်နိုင်သည်။ ပရိုဂရမ်တွင် undefined class တစ်ခုပေါ်လာသည့်အခါ PHP သည်သက်ဆိုင်ရာလူတန်းစားဖိုင်ကိုတင်ရန်ဤ callback function များကိုခေါ်ဆိုလိမ့်မည်။

မည်သို့အသုံးပြုရမည်နည်း

 <span><span><span class="hljs-title function_ invoke__">spl_autoload_register</span></span><span>(function(</span><span><span class="hljs-variable">$class</span></span><span>) {
    </span><span><span class="hljs-comment">// အလိုအလျောက်တင်ယုတ္တိဗေဒ,ဥပမာအားဖြင့်:ဖိုင်များပါဝင်သည်</span></span><span>
    </span><span><span class="hljs-keyword">include_once</span></span><span> </span><span><span class="hljs-string">'classes/'</span></span><span> . </span><span><span class="hljs-variable">$class</span></span><span> . </span><span><span class="hljs-string">'.php'</span></span><span>;
});
</span></span>

ဤဥပမာတွင် Spl_autoload_register သည် အမည်မသိ function ကိုမှတ်ပုံတင်သည်။ အတန်းကိုရှာမတွေ့ပါက၎င်းသည်သက်ဆိုင်ရာလူတန်းစားဖိုင်ကိုရှာဖွေရန် အတန်းများ ဖိုင်တွဲသို့အလိုအလျောက်သွားလိမ့်မည်။

2 ။ spl_autoload_Unregister ဆိုတာဘာလဲ။

spl_autoload_Unregise သည်မှတ်ပုံတင်ထားသောမှတ်ပုံတင်ခြင်းမှထွက်ရန်အသုံးပြုသော PHP တွင်အလိုအလျောက် loading function ဖြစ်သည်။ ဤလုပ်ဆောင်မှုမှတစ်ဆင့် developer များက SPL_Autoload_register တွင်မှတ်ပုံတင်ထားသောအလိုအလျောက်ဝန်ပြန်ငွေကိုကိုယ်တိုင်ဖယ်ရှားနိုင်သည်။

မည်သို့အသုံးပြုရမည်နည်း

 <span><span><span class="hljs-variable">$splAutoloadFunction</span></span><span> = </span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$class</span></span></span><span>) {
    </span><span><span class="hljs-keyword">include_once</span></span><span> </span><span><span class="hljs-string">'classes/'</span></span><span> . </span><span><span class="hljs-variable">$class</span></span><span> . </span><span><span class="hljs-string">'.php'</span></span><span>;
};

</span><span><span class="hljs-title function_ invoke__">spl_autoload_register</span></span><span>(</span><span><span class="hljs-variable">$splAutoloadFunction</span></span><span>);
</span><span><span class="hljs-comment">// ဒီအလိုအလျောက်တင်မရှိတော့မရှိတော့ပါ,ကထဲက log နိုင်ပါတယ်</span></span><span>
</span><span><span class="hljs-title function_ invoke__">spl_autoload_unregister</span></span><span>(</span><span><span class="hljs-variable">$splAutoloadFunction</span></span><span>);
</span></span>

အထက်ပါကုဒ်တွင် Autoload callback function ကိုပထမ ဦး ဆုံးမှတ်ပုံတင်ပြီး spl_autoload_Unregister ကိုနောက်ပိုင်းတွင်မှတ်ပုံတင်ပါ။ Logging လုပ်ပြီးနောက် PHP သည်ဤ callback function ကိုအတန်းကိုဖွင့်ရန်ဖုန်းဆက်လိမ့်မည်မဟုတ်ပါ။

3 ။ spl_autoload_register နှင့် spl_autoload_unregister အကြားအဓိကကွဲပြားခြားနားမှု

သီးခြားထင်ရှားသော SPL_Autoload_Register spl_autoload_Unregister
လုပ်ဆောင်ချက် Automatic Loading function ကိုမှတ်ပုံတင်ပါ အလိုအလျောက်တင်ထားသော function ကိုထွက်ပါ
အသုံးပြု Autoload Quick သို့ Autoload Quick သို့ Autoload ၏အာဏာကိုထည့်ပါ Autoload Queue မှမှတ်ပုံတင်ထားသော Autoload function ကိုဖယ်ရှားခဲ့သည်
တေးရေး callback function ကိုသို့မဟုတ်နည်းလမ်းကိုလက်ခံပါ မှတ်ပုံတင်ထားသော callback function ကိုသို့မဟုတ်နည်းလမ်းကိုလက်ခံပါ
Value ကိုပြန်သွားပါ ဘာမှျ ဘာမှျ
  1. မှတ်ပုံတင်ခြင်းနှင့်ဖျက်သိမ်းခြင်း၏အခန်းကဏ် : spl_autoload_register သည် သင် အတန်း၏ 0 န်ဆောင်မှုအတွက် callback function ကိုသတ်မှတ်ရန်ခွင့်ပြုသည်။ ယခင်သည်များသောအားဖြင့်အတန်းထဲသို့ 0 င်ရောက်ခြင်းယန္တရားအသစ်များကိုလျှောက်လွှာထဲသို့ထည့်ရန်အသုံးပြုသည်။

  2. Call Order : Spl_autoload_registers မျိုးစုံကိုမှတ်ပုံတင်သည့်အခါ PHP သည်၎င်းတို့မှတ်ပုံတင်ထားသောအမိန့်တွင် php ကိုခေါ်ယူလိမ့်မည်။ အကယ်. callback function ကို class definity ကိုရှာဖွေပါကနောက်ဆက်တွဲ callback function ကိုရပ်တန့်သွားလိမ့်မည်။ STS_Autoload_Unregister သည် လိုအပ်သည့်အခါလိုအပ်သည့်အခါလိုအပ်သော callback function ကိုဖယ်ရှားရန်ခွင့်ပြုသည်။

  3. PHP script တစ်ခုလုံးကိုသက်ရောက်စေသည့် အပြည့်အစုံ ကိုကမ္ဘာအနှံ့အပြားတွင်အလိုအလျောက် 0 န်ဆောင်မှုအသစ်အတွက်အလိုအလျောက်တင်ဆောင်လာသောယုတ္တိဗေဒအသစ်ကိုမှတ်ပုံတင်သည် spl_autoload_Unregise သည် callback function ကိုရွေးချယ်ပြီး Php အလိုအလျောက် 0 န်ဆောင်မှုပေးရန်အပြုအမူကိုပြောင်းလဲစေခြင်း။

4 ။ spl_autoload_unregister ကို ဘယ်အချိန်မှာသုံးရမလဲ။

အချို့သောကိစ္စရပ်များတွင် Autoload callback function ကိုမှတ်ပုံတင်ရန် SPL_AUTOALOAD_Register ကို သုံးရန်လိုအပ်ပေမည်။ ဥပမာအားဖြင့်:

  • Dynamic switching loading Logic : အချို့သောရှုပ်ထွေးသောစီမံကိန်းများတွင်မတူညီသောအော်တိုတင်သော 0 န်ဆောင်မှုယန္တရားများကိုမတူညီသောပတ်ဝန်းကျင်တွင်ဖြစ်စေ, spl_autoload_Unregister ဖြင့်သင် Runtime တွင်မလိုအပ်တော့သည့် Autoload function ကိုဖယ်ရှားပြီး loading logic ဖြင့်အစားထိုးနိုင်သည်။

  • Debugging နှင့် Troubleshooting : Debugging လုပ်ငန်းစဉ်အတွင်းအလိုအလျောက် 0 င်ရောက်ခြင်းလုပ်ဆောင်ချက်တစ်ခုတွင်ပြ a နာတစ်ခုရှိသေးသည်ဟုသင်သံသယရှိပါက,

  • Redundant Loading ကိုလျှော့ချပါ

5 ။ အကျဉ်းချုပ်

spl_autoload_register နှင့် spl_autoload_Unregister သည် PHP တွင် autoload နှင့်သက်ဆိုင်သောလုပ်ဆောင်ချက်များဖြစ်သည်။ ယခင်က autooloading ယန္တရားကိုမှတ်ပုံတင်ရန်အသုံးပြုသည်။ အဆုံးတွင်မလိုအပ်တော့ပါ။ ၎င်းတို့၏လုပ်ဆောင်ချက်များနှင့်သက်ဆိုင်သည့်အခြေအနေများကိုနားလည်လွယ်လွယ်လွယ်ပြင်လွယ်။ ထိရောက်သောအလိုအလျောက်ဝန်ဆောင်မှုများကိုတည်ဆောက်ရန်အလွန်အရေးကြီးသည်။ အမှန်တကယ်ဖွံ့ဖြိုးတိုးတက်မှုတွင် SPL_Autoload_register သည်အသုံးများသောအသုံးပြုမှုတစ်ခုဖြစ်သည်

ဤလုပ်ဆောင်ချက်နှစ်ခုကိုအသုံးပြုခြင်းသည်သင်၏ပရောဂျက်တွင်လူတန်းစားတင်ခြင်းကိုပိုမိုကောင်းမွန်စွာစီမံခန့်ခွဲနိုင်ပြီးသင်၏ကုဒ်၏ထိန်းသိမ်းမှုနှင့်ပြောင်းလွယ်ပြင်လွယ်မှုကိုတိုးတက်စေသည်။