အသုံးအများဆုံးပြ problems နာများထဲမှတစ်ခုမှာ SPL_Autoload_register ကို မှန်ကန်စွာခေါ်ဆိုခြင်းသို့မဟုတ်အခြားနေရာများတွင် overwriteing မဟုတ်ပါ။ ဥပမာအားဖြင့်, Autoloaders မျိုးစုံကိုအမှာစာတွင်မှတ်ပုံတင်ထားလျှင်အချို့သောအတန်းများကိုရှာမတွေ့ပါ။
<?php
spl_autoload_register(function ($class) {
include __DIR__ . '/classes/' . $class . '.php';
});
ဒီအမည်မသိ function ကိုမှတ်ပုံတင်ပြီးကွပ်မျက်ခံရကြောင်းသေချာပါစေ။ SPL_Autoload_Functions မှတဆင့်လက်ရှိမှတ်ပုံတင်ထားသော Autoload လုပ်ဆောင်ချက်များကိုစာရင်းပြုစုနိုင်သည်။
namespace ကိုသုံးသောအခါစာသင်ခန်းအမည်တွင် backslash (\) ပါ 0 င်သည်။
<?php
spl_autoload_register(function ($class) {
$path = __DIR__ . '/src/' . str_replace('\\', '/', $class) . '.php';
require $path;
});
မှတ်ချက် - strot_replace ('\\' ',' / ',', $ class) ကို directory လမ်းကြောင်းသို့ပြောင်းလဲရန်အသုံးပြုရမည်။
Linux ကဲ့သို့သောဖြစ်ရပ်မှန်အထိခိုက်မခံသောဖိုင်စနစ်များတွင် Class Name ၏အမည်သည်ဖိုင်အမည်ကိုအတိအကျကိုက်ညီရမည်။ အကယ်. သင်သည် Windows (Caster-case-insensitive) အောက်တွင်တည်ဆောက်ပြီး Linux တွင်ဖြန့်ဖြူးပါကသင်အတန်းထဲတွင်အမှားမတွေ့ပါ။
PSR-4 Naming သတ်မှတ်ချက်သတ်မှတ်ချက်ကိုတစ်ပုံစံတည်းသုံးရန်ဒီဇိုင်းပြုလုပ်ရန်အကြံပြုသည်။
နောက်ထပ်ဘုံအကြောင်းပြချက်တစ်ခုမှာလမ်းကြောင်းအမှားတစ်ခုသို့မဟုတ် root directory အမှားဖြစ်သည်။ ဥပမာအားဖြင့်, စီမံကိန်းဖွဲ့စည်းပုံတည်ဆောက်ပြီးနောက်အောက်ပါလမ်းကြောင်း splicing method သည်ကျရှုံးနိုင်သည်။
require 'classes/' . $class . '.php';
ပိုမိုအားကောင်းတဲ့နည်းမှာတကယ့်လမ်းကြောင်းကိုသုံးဖို့ဖြစ်တယ်။
require __DIR__ . '/classes/' . $class . '.php';
သို့မဟုတ်လမ်းကြောင်းတည်ရှိမရှိမရှိစစ်ဆေးရန် realaph () ကို သုံးပါ။
အလိုအလျောက်တင်ဆောင်လာသောယုတ္တိဗေဒမှန်ကန်မှုရှိပါကပင်ပစ်မှတ်ထားလူတန်းစားဖိုင်သည်မတည်ရှိပါကသို့မဟုတ်မှန်ကန်စွာမဖန်တီးပါကအလိုအလျောက် 0 ယ်သူသည်လူတန်းစားကို 0 င်ခွင့်မရနိုင်ပါ။ ဤအချိန်၌, ဒါ့အပြင်အလားတူ debug ကိုအလွန်အထောက်အကူဖြစ်ပါတယ်:
<?php
spl_autoload_register(function ($class) {
$file = __DIR__ . '/classes/' . $class . '.php';
if (!file_exists($file)) {
error_log("Autoload failed: $file not found");
}
require $file;
});
သငျသညျ composer (အကြံပြုနည်းလမ်း) မှတဆင့်အလိုအလျောက်တင်ခြင်းကိုစီမံခန့်ခွဲနေလျှင်, အောက်ပါတို့ကိုသေချာစေရန်လိုအပ်သည်။
Composer Dump-Autoload သည် Vendor / autoload.php သည်နောက်ဆုံးပေါ်ဖြစ်သည်။
'ရောင်းချသူ / autoload.php လိုအပ်သည်'; မှန်ကန်စွာဟုခေါ်သည်နှင့်လမ်းကြောင်းမှန်ကိုမှန်ကန်သည်။
<?php
require __DIR__ . '/vendor/autoload.php';
စီမံကိန်း၏ https://gitbox.net/vendor/autoload.php ကို ကြည့်ခြင်းအားဖြင့်ဖိုင်ကိုမှန်ကန်စွာဖြန့်ကျက်ထားခြင်းရှိမရှိစစ်ဆေးနိုင်သည်။