လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> command line (CLI) ပတ်ဝန်းကျင်တွင် autoloader ပ conflicts ိပက်ခများကိုရှောင်ရှားရန် Spl_Autoload_Unregister ကိုမည်သို့အသုံးပြုရမည်နည်း။

command line (CLI) ပတ်ဝန်းကျင်တွင် autoloader ပ conflicts ိပက်ခများကိုရှောင်ရှားရန် Spl_Autoload_Unregister ကိုမည်သို့အသုံးပြုရမည်နည်း။

gitbox 2025-09-16

command line (CLI) ပတ်ဝန်းကျင်တွင် autoloader ပ conflicts ိပက်ခများကိုရှောင်ရှားရန် Spl_Autoload_Unregister ကို မည်သို့အသုံးပြုရမည်နည်း။

PHP တွင် SPP တွင် Spl_autoload_register () သည် အလိုအလျောက်တင်ထားသောလုပ်ဆောင်မှုကိုမှတ်ပုံတင်ရန်အသုံးပြုသည်။ အထူးသဖြင့်ကြီးမားသောစီမံကိန်းများတွင်အလိုအလျောက်တင်ဆောင်သည့်ယန္တရားသည်အထူးအရေးကြီးသည်။ သို့သော်အချို့ဖြစ်ရပ်များတွင်စာကြည့်တိုက်များသို့မဟုတ်မူဘောင်မျိုးစုံသည်မိမိတို့ကိုယ်ပိုင် autooloaders များကိုမှတ်ပုံတင်သည့်အခါပ conflicts ိပက်ခများဖြစ်ပွားစေခြင်း, ဤပြ problem နာကိုဖြေရှင်းရန်ဤပ conflicts ိပက်ခများကိုရှောင်ရှားရန် Spl_Autoload_Unregister () ကိုသုံးနိုင်သည်။

1 ။ အလိုအလျောက် loader အလုပ်လုပ်ပုံ

PHP တွင် SPP တွင် Spl_autoload_register () SPL (Standard PHP စာကြည့်တိုက်) ၏ autoloader function ကိုထည့်သွင်းထားသည်။ PHP သည် Class ဖိုင်တစ်ခုကိုဖွင့်ရန်လိုအပ်သည့်အခါ၎င်းသည် Target Class ကိုရှာမတွေ့သည်အထိဤ autooloading လုပ်ဆောင်ချက်များကိုမှတ်ပုံတင်ရန်အတွက်တောင်းဆိုသည်။

 <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-keyword">include</span></span><span> </span><span><span class="hljs-string">'path/to/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>

Class ကိုရည်ညွှန်းသောအခါ spl_autoload_register () တွင် function ကိုသက်ဆိုင်ရာလူတန်းစားဖိုင်ကိုအလိုအလျောက်ဖွင့်ရန်ခေါ်ယူလိမ့်မည်။ အကယ်. autoloader များစွာကိုမှတ်ပုံတင်ထားလျှင် PHP သည်၎င်းတို့အားမှတ်ပုံတင်ရန်အစီအစဉ်တွင်ပါ 0 င်သည်။

2 ။ အလိုအလျောက် loader ပ conflict ိပက်ခအခြေအနေ

သင် PHP လျှောက်လွှာကိုရေးဆွဲပြီးတတိယပါတီစာကြည့်တိုက်နှစ်ခုကိုအသုံးပြုနေသည်ဆိုပါစို့။ စာကြည့်တိုက်တစ်ခုစီသည်ကိုယ်ပိုင် autoload function ကို SPL_Autoload_register () မှတဆင့်မှတ်ပုံတင်ထားသည်။ စာကြည့်တိုက်နှစ်ခုသည်တူညီသောအတန်းအစားအမည်သို့မဟုတ်ဖိုင်ဖွဲ့စည်းပုံကိုအသုံးပြုပါက၎င်းသည်အတန်းအစားတင်ခြင်းပ conflicts ိပက်ခများကိုဖြစ်စေနိုင်သည်။ ဥပမာအားဖြင့်စာကြည့်တိုက်နှစ်ခုစလုံးသည် MyClass အတန်းအစားအတွက် autoloader တစ်ခုမှတ်ပုံတင်ခြင်းဆိုပါစို့ PHP သည် autoloader ကို ဦး စွာတင်ပြီးအခြားတစ် ဦး ကို ဦး စွာတင်လိမ့်မည်။

3 ။ ပ conflicts ိပက်ခများကိုရှောင်ရှားရန် Spl_Autoload_Unregister ကို သုံးပါ

ကွဲပြားခြားနားသော autoloaders များအကြားပ conflicts ိ ပက် ခများကိုရှောင်ရှားရန်, သတ်သတ်မှတ်မှတ်ဇာတ်လမ်းတစ်ပုဒ်တွင်စာကြည့်တိုက်တစ်ခုအတွက် autoloader ကိုအသုံးပြုရန်သို့မဟုတ်သီးခြားအတန်းမ 0 င်ခင် autoloader ကို disable လုပ်လိုပေမည်။

ဥပမာ - မလိုလားအပ်သော autoloader တစ်ခုမှထွက်ပါ

 <span><span><span class="hljs-comment">// ပထမ ဦး ဆုံး autoloader ကိုမှတ်ပုံတင်ပါ</span></span><span>
</span><span><span class="hljs-variable">$loader1</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</span></span><span> </span><span><span class="hljs-string">'library1/'</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">$loader1</span></span><span>);

</span><span><span class="hljs-comment">// ဒုတိယ autoloader ကိုမှတ်ပုံတင်ပါ</span></span><span>
</span><span><span class="hljs-variable">$loader2</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</span></span><span> </span><span><span class="hljs-string">'library2/'</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">$loader2</span></span><span>);

</span><span><span class="hljs-comment">// မင်းဒီမှာဆုံးဖြတ်မယ်ဆိုပါစို့,ပထမ ဦး ဆုံး autoloader ကိုသာသုံးပါ,နှင့်ဒုတိယ autoloader ဖယ်ရှားလိုက်ပါ</span></span><span>
</span><span><span class="hljs-title function_ invoke__">spl_autoload_unregister</span></span><span>(</span><span><span class="hljs-variable">$loader2</span></span><span>);

</span><span><span class="hljs-comment">// ပထမစာကြည့်တိုက်ကိုဆက်သုံးပါ</span></span><span>
</span><span><span class="hljs-variable">$obj1</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title class_">Library1</span></span><span>\</span><span><span class="hljs-title function_ invoke__">ClassA</span></span><span>();
</span></span>

ဤဥပမာတွင် PHP သည်ပထမဆုံးစာကြည့်တိုက်၏ autooloader ကိုသာအသုံးပြုကြောင်းသေချာစေရန် Spl_Autoload_Unregister () ကို အသုံးပြု. ဒုတိယ autoloader ကိုထုတ်ယူခဲ့သည်။ ဤနည်းအားဖြင့် Autoloader အကျိုးသက်ရောက်မှုကိုအကျိုးသက်ရောက်စေသည့်အတွက်သင်ပြောင်းလွယ်ပြင်လွယ်ထိန်းချုပ်နိုင်သည်။ ထို့ကြောင့်ပ conflicts ိပက်ခများကိုရှောင်ရှားနိုင်သည်။

ဥပမာ - command line ပတ် 0 န်းကျင်တွင်အသုံးပြုသည်

PHP scriptions များသည်များသောအားဖြင့် execute concention ည့်သည်များဖြစ်သည့်အခါ PHP scriptions သည်များသောအားဖြင့် Execute Execute နှင့်မတူဘဲ PHP scriptions သည် command scriptions သည်ပုံမှန်အားဖြင့်တည်းဖြတ်ခြင်းနှင့်မတူဘဲ, အကယ်. သင်၏ command line script များသည်တစ်ချိန်တည်းတွင်တတိယပါတီစာကြည့်တိုက်များစွာကိုမှီခိုနေပါကဤစာကြည့်တိုက်များသည်တစ် ဦး နှင့်တစ် ဦး မဆန့်ကျင်ကြောင်းသေချာစေရန်အရေးကြီးသည်။ SPL_Autoload_Unregister () ကိုအသုံးပြုခြင်းသည်မလိုလားအပ်သော autooloaders များကိုရွေးချယ်ပြီးအမှားများကိုရှောင်ရှားရန်သင့်အားကူညီနိုင်သည်။

ဥပမာအားဖြင့်:

 <span><span><span class="hljs-comment">// autoloader မှတ်ပုံတင်ပါ A</span></span><span>
</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-keyword">include</span></span><span> </span><span><span class="hljs-string">'/path/to/libraryA/'</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-comment">// autoloader မှတ်ပုံတင်ပါ B</span></span><span>
</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-keyword">include</span></span><span> </span><span><span class="hljs-string">'/path/to/libraryB/'</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-comment">// command line script ပြေးသောအခါ,စာကြည့်တိုက်ကိုသာတင်ပါ A</span></span><span>
</span><span><span class="hljs-title function_ invoke__">spl_autoload_unregister</span></span><span>(function(</span><span><span class="hljs-variable">$class</span></span><span>) {
    </span><span><span class="hljs-keyword">include</span></span><span> </span><span><span class="hljs-string">'/path/to/libraryB/'</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-comment">// ယခု,စာကြည့်တိုက်သာ A အတန်းကိုတင်လိမ့်မည်</span></span><span>
</span><span><span class="hljs-variable">$classA</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> LibraryA\</span><span><span class="hljs-title function_ invoke__">SomeClass</span></span><span>();
</span></span>

အထက်ပါအဆင့်များမှတစ်ဆင့် command line script ကိုဖွင့်သောအခါအလိုအလျောက် loader ပ conflict ိပက်ခပြ problem နာကိုထိရောက်စွာဖြေရှင်းနိုင်ရန်သေချာစေနိုင်သည်။

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

PHP တွင် Spl_autoload_register () သည်အလိုအလျောက်တင်ခြင်းကိုကိုင်တွယ်ရန်အတွက်အစွမ်းထက်သောကိရိယာတစ်ခုဖြစ်သော်လည်းပ conflicts ိပက်ခများဖြစ်ပေါ်စေနိုင်သည်။ Spl_Autoload_Unregister () ကျွန်ုပ်တို့သည်မလိုလားအပ်သော autoloaders များကိုပြောင်းလွယ်ပြင်လွယ်ရှိစေပြီးဤပ conflicts ိပက်ခများကိုရှောင်ရှားနိုင်ပြီးအတန်း၏မှန်ကန်သောတင်ရန်ကိုရှောင်ရှားနိုင်သည်။ ဤနည်းလမ်းသည်အထူးသဖြင့် command line (CLI) ပတ် 0 န်းကျင်အတွက်အထူးသဖြင့်သင့်တော်သည်။