Get_includude_PATH () function ကိုလက်ရှိ PHP script ၏လမ်းကြောင်းကိုရရှိရန်အသုံးပြုသည်။ ပါ 0 င်သည့်လမ်းကြောင်းသည် PHP သည်ဖိုင်များကိုဖွင့်သောအခါ PHP သည် sequence ကိုရှာဖွေလိမ့်မည်ဟုလမ်းညွှန်များရှိသည်။
ပါ 0 င်မှုလမ်းကြောင်းကိုပြင်ဆင်ခြင်းဖြင့်စီမံကိန်းအတွင်းရှိအတန်းဖိုင်များ၏ root directory ကို root root directory root root root root root root root root root root root root root root add လုပ်နိုင်ပါတယ်။
ဥပမာအားဖြင့်:
// လက်ရှိပါ 0 င်သည့်လမ်းကြောင်းကိုကြည့်ပါ
echo get_include_path();
ပုံမှန်အားဖြင့်ပြန်ရောက်သည့်ပုံစံသည် -
.:/usr/local/lib/php
ကျွန်ုပ်တို့၏ကိုယ်ပိုင်လူတန်းစားလမ်းညွှန်ကို set_includude_path () function မှတဆင့်ထည့်နိုင်သည်။
set_include_path(get_include_path() . PATH_SEPARATOR . '/path/to/your/classes');
ဤနည်းအားဖြင့် PHP သည်ဤလမ်းညွှန်တွင်ထည့်သွင်းရန်လိုအပ်သည့်ဖိုင်များကိုရှာဖွေလိမ့်မည်။
spl_autoload_register () သည် PHP မှပေးသည့် interface တစ်ခုဖြစ်ပြီးအလိုအလျောက်တင်ဆောင်လာသောလုပ်ဆောင်မှုများကိုမှတ်ပုံတင်ထားသော interface တစ်ခုဖြစ်သည်။ ၎င်းသည် autoload callback function များကိုတစ်ခုသို့မဟုတ်တစ်ခုထက်ပိုသောမှတ်ပုံတင်ရန်ခွင့်ပြုသည်။ undefined class ကိုအသုံးပြုသောအခါ PHP သည် Autoload function များကို class file ကိုဖွင့်ရန်အလှည့်အပြောင်းသို့ခေါ်ဆိုလိမ့်မည်။
အသုံးပြုမှုဥပမာ:
spl_autoload_register(function ($className) {
// အလိုအလျောက်တင်ယုတ္တိဗေဒ
});
Callback function တွင် clatege file ကိုအတန်းအမည်အရသက်ဆိုင်ရာဖိုင်ကိုရှာဖွေရန်နှင့်၎င်းကိုမိတ်ဆက်ပေးရန်လိုအပ်သည့်ယုတ္တိဗေဒကိုအကောင်အထည်ဖော်ရန်လိုအပ်သည်။
PSR-0 သို့မဟုတ်အလားတူသတ်မှတ်ချက်များဖြင့်စီစဉ်ထားသောအတန်းအစားများကိုစီစဉ်ထားပြီးအတန်းအစားအမည်နှင့်ဖိုင်လမ်းကြောင်းသည်တစ် ဦး မြေပုံရေးဆွဲရေးဆက်ဆံရေးရှိကြောင်းယူဆသည်။
// 1. setting တွင်လမ်းကြောင်းပါဝင်သည်,ဖိုင်လမ်းညွှန်ထဲသို့ထည့်ပါ
set_include_path(get_include_path() . PATH_SEPARATOR . __DIR__ . '/classes');
// 2. Automatic Loading function ကိုမှတ်ပုံတင်ပါ
spl_autoload_register(function ($className) {
// ထည့်သွင်းလမ်းကြောင်းကိုရယူပါ
$paths = explode(PATH_SEPARATOR, get_include_path());
// ဖိုင်အမည်ကိုအတန်းအမည်အရပြောင်းလဲခြင်း,ဥပမာအားဖြင့်:MyClass -> MyClass.php
$fileName = str_replace('\\', DIRECTORY_SEPARATOR, $className) . '.php';
// ဖြတ်သန်းလမ်းကြောင်းများပါရှိသည်,ဖိုင်များကိုရှာပါ
foreach ($paths as $path) {
$fullPath = $path . DIRECTORY_SEPARATOR . $fileName;
if (file_exists($fullPath)) {
require_once $fullPath;
return;
}
}
// မတွေ့ပါက,ချွင်းချက်တစ်ခုပစ်သို့မဟုတ်ကလျစ်လျူရှု
// throw new Exception("အတန်းကိုမတင်နိုင်ပါ: $className");
});
စီမံကိန်းဖွဲ့စည်းပုံမှာအောက်ပါအတိုင်းဖြစ်သည်ဟုယူဆပါ -
/project
/classes
/App
User.php // အတန်းကိုသတ်မှတ်ပါ App\User
/Lib
Helper.php // အတန်းကိုသတ်မှတ်ပါ Lib\Helper
index.php
အထက်ပါအလိုအလျှောက် Loading code ကို အညွှန်းကိန်း တွင်ထည့်သွင်းပြီးနောက်:
// အတန်းကိုသုံးပါ,ဖိုင်များကိုကိုယ်တိုင်တင်သွင်းရန်မလိုအပ်ပါ
$user = new App\User();
$helper = new Lib\Helper();
PHP သည်မှတ်ပုံတင်ထားသောအလိုအလျောက်တင်ထားသော function ကိုအလိုအလျောက်ခေါ်ဆိုပြီးသက်ဆိုင်ရာလူတန်းစားဖိုင်ကိုရှာဖွေပြီးလက်ဖြင့်စီမံခန့်ခွဲခြင်းသင်တန်းများကိုကိုယ်တိုင်ပြုလုပ်ပါ။
Get_includude_path () သည် PHP တွင် PHP's Directory ကိုပြောင်းလွယ်ပြင်လွယ်ရှိစေရန်ခွင့်ပြုသည်။ ၎င်းသည်ကုဒ်ဖွဲ့စည်းပုံစီမံကိန်းအတွက်အဆင်ပြေစေသည်။
spl_autoload_register () သည် လက်စွဲစာအုပ် များစွာကိုရှောင်ရှားရန်သို့မဟုတ် ထည့်သွင်းရန် အလိုအလျောက်တင်ဆောင်သည့်ယန္တရားကိုပေးသည်။
နှစ်ခုကိုပေါင်းစပ်ပြီးအလိုအလျောက်တင်ခြင်းသည်အလွန်အမင်းအကောင်အထည်ဖော်နိုင်ပြီးစီမံကိန်းထိန်းသိမ်းခြင်းနှင့်သန့်ရှင်းမှုများကိုတိုးတက်အောင်လုပ်ခြင်း,
ထို့အပြင်စီမံကိန်းသည် Automatic Loading Management ကိုပိုမိုစံသတ်မှတ်ရန်နှင့်ရိုးရှင်းစေရန်ရေးဆွဲသူအလိုအလျောက်တင်ထားသောစံများကိုလည်းပေါင်းစပ်နိုင်သည်။
ဤတွင်အပြည့်အဝနမူနာကုဒ်တစ်ခုဖြစ်သည်:
<?php
// setting တွင်လမ်းကြောင်းပါဝင်သည်,အမျိုးအစားထည့်ပါ
set_include_path(get_include_path() . PATH_SEPARATOR . __DIR__ . '/classes');
// Automatic Loading function ကိုမှတ်ပုံတင်ပါ
spl_autoload_register(function ($className) {
$paths = explode(PATH_SEPARATOR, get_include_path());
$fileName = str_replace('\\', DIRECTORY_SEPARATOR, $className) . '.php';
foreach ($paths as $path) {
$fullPath = $path . DIRECTORY_SEPARATOR . $fileName;
if (file_exists($fullPath)) {
require_once $fullPath;
return;
}
}
});
ဤနည်းအားဖြင့်သင်၏ PHP စီမံကိန်းစီမံခန့်ခွဲမှုပိုမိုလွယ်ကူပြီးပိုမိုထိရောက်လိမ့်မည်။