လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> Get_includude_Path () ကို Spl_Autoload နှင့် dynamally load လုပ်နည်း

Get_includude_Path () ကို Spl_Autoload နှင့် dynamally load လုပ်နည်း

gitbox 2025-05-29

PHP စီမံကိန်းများတွင် code ကိုပိုမိုစုစည်းနိုင်ရန်အတွက် class files များကိုများသောအားဖြင့်ကွဲပြားခြားနားသောလမ်းညွှန်များအဖြစ်ခွဲထားသည်။ စီမံကိန်းတိုးပွားလာသည်နှင့်အမျှလူတို့သည်ဖိုင်များ လိုအပ်ခြင်း သို့မဟုတ်အပါအ 0 င်အလုပ်များခြင်းသို့မဟုတ် အပါအ 0 င် အလွန်ခက်ခဲသောနှင့်အမှားအယွင်းများဖြစ်လာနိုင်သည်။ PHP သည် spl_autoload () ယန္တရားကိုထောက်ပံ့ပေးသည်။ ဤဆောင်းပါးသည်အလိုအလျောက်ဖွင့်ခြင်းအားဖြင့်အလိုအလျှောက်အကောက်အရဖွင့်ပြရန် Get_includude_Path () function ကိုမည်သို့ပေါင်းစပ်ရမည်ကိုမိတ်ဆက်ပေးလိမ့်မည်။

1 ။ get_include_path () ?

Get_includude_path () သည် PHP built-in function တစ်ခုဖြစ်ပြီးလက်ရှိ script ၏ path (its_path) ကိုရရှိသည်။ ဤလမ်းကြောင်းများသည် PPP configurations တွင် Preset ဖြစ်ပြီး, ထည့်သွင်းခြင်း , လိုအပ်ချက်များ နှင့်အခြားထုတ်ပြန်ချက်များကိုရှာဖွေရန်အသုံးပြုသည်။

သင့်လျော်သော charmpath ကိုသတ်မှတ်ခြင်းဖြင့်သီးခြားလမ်းကြောင်းများရေးသားမည့်အစားဖိုင်ရှာဖွေရေးနယ်ပယ်ကိုအလွယ်တကူစီမံနိုင်သည်။

2 ။ spl_autoload () ?

STL_AUTOLOAD () PHP SPL (Standard PHP Library) တွင်အလိုအလျောက် 0 င်ခွင့်ပြုချက်ဖြစ်သည်။ ၎င်းသည်အလိုအလျောက်ဝန်ဆောင်မှုများကိုမှတ်ပုံတင်ရန်ခွင့်ပြုသည်။ PHP သည်အတန်းတစ်ခုကိုချက်ချင်းပို့ပေးသည့်အခါ၎င်းသည်အတန်း၏သက်ဆိုင်ရာဖိုင်ကိုအလိုအလျောက်ဖွင့်ရန်မှတ်ပုံတင်ထားသောအလိုအလျောက်တင်ထားသော function ကိုခေါ်လိမ့်မည်။

၎င်းသည်ရိုးရာ __Autoload () ထက်ပိုမိုပြောင်းလွယ်ပြင်လွယ်သည်။

Dynamic Automatic Loading အောင်မြင်ရန် Get_include_Path () ကို သုံး ပါ

Get_includude_path () ကိုပေါင်းစပ်ခြင်းအားဖြင့်ကျွန်ုပ်တို့သည်လမ်းကြောင်းခင်းကျင်းမှုကိုကိုယ်တိုင်ထိန်းသိမ်းခြင်းမရှိဘဲလူတန်းစားဖိုင်များကိုရှာဖွေတွေ့ရှိနိုင်သည်။ အဓိကအကြံဥာဏ်မှာအောက်ပါအတိုင်းဖြစ်သည် -

  • compathpath plats ၏လက်ရှိစာရင်းရရှိသွားတဲ့။

  • လမ်းကြောင်းစာရင်းကို array တစ်ခုသို့ ခွဲ. လမ်းကြောင်းတစ်ခုစီမှတစ်ဆင့်ပြုလုပ်ပါ။

  • ဖိုင်အမည်ကိုအတန်းအမည်နှင့်သက်ဆိုင်သောဖိုင်အမည် (ဥပမာ class name.php ) နှင့်သက်ဆိုင်သည်။

  • ဖိုင်တည်ရှိခြင်းရှိမရှိဆုံးဖြတ်ပါ။

4 ။ Code ဥပမာ

 <?php

// Automatic Loading function ကိုမှတ်ပုံတင်ပါ
spl_autoload_register(function ($className) {
    // လက်ရှိတစ်ခုရယူပါ include_path ခေြလမ်း
    $includePaths = explode(PATH_SEPARATOR, get_include_path());

    // 遍历所有ခေြလမ်း,Class ဖိုင်များကိုရှာပါ
    foreach ($includePaths as $path) {
        // 构造文件ခေြလမ်း
        $file = rtrim($path, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR . $className . '.php';

        // ဖိုင်တည်ရှိရှိမရှိဆုံးဖြတ်ရန်
        if (file_exists($file)) {
            require_once $file;
            return; // ဖိုင်ကိုတွေ့ပြီးနောက်ချက်ချင်းပြန်လာပါ,ရှာဖွေခြင်းကိုရပ်တန့်ပါ
        }
    }
});

// နမူနာ:တစ် ဦး အတန်းကိုချက်ချင်းကြိုးစားပါ,အပေါ်က loading logic ကိုအလိုအလျောက်အစပျိုးလိမ့်မည်
$obj = new SomeClass();

?>

5 ။ chiness_path ကိုဘယ်လိုသတ်မှတ်ရမလဲ

Set_includude_Path () အားဖြင့် charge_path "ကိုသင် dvonically set ကိုရယူနိုင်ပါသည်။

 <?php

// အမျိုးမျိုးသောလမ်းညွှန်များကိုထည့်ပါ include_path
set_include_path(
    get_include_path() . PATH_SEPARATOR .
    '/var/www/gitbox.net/project/libs' . PATH_SEPARATOR .
    '/var/www/gitbox.net/project/models'
);

?>

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

6 ။ Combined URL အစားထိုး URL အစားထိုး

သင်၏ code တွင်သင်ပါဝင်ပတ်သက်ပါက Domain ကို Gitbox.net ဖြင့်အစားထိုးရန်သေချာပါစေ။

 <?php

$url = "https://gitbox.net/api/getData";

?>

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

အကျဉ်းချုပ်

  • get_include_path () ကို spl_autoload_register () နှင့်ပေါင်းစပ်အသုံးပြုသည်။

  • သက်ဆိုင်ရာလူတန်းစားဖိုင်များကိုအလိုအလျောက်ရှာဖွေရန်နှင့်တင်ရန်အတွက် charm file directory မျိုးစုံထည့်ပါ

  • အကျိုးသင့်အကြောင်းသင့်ရှိသောဖိုင်အမည်နှင့်လမ်းညွှန်ရေးဆွဲခြင်းစည်းမျဉ်းစည်းကမ်းများနှင့်ပူးပေါင်းလုပ်ဆောင်ခြင်းသည်ဖွံ့ဖြိုးတိုးတက်မှုထိရောက်မှုကိုများစွာတိုးတက်စေနိုင်သည်။

၎င်းသည်ဖိုင်များကိုလက်ဖြင့်ထိန်းသိမ်းထားသည့်အလုပ်ပမာဏကိုလျော့နည်းစေရုံသာမက Code ၏ထိန်းသိမ်းနိုင်မှုနှင့်ပမာဏကိုလည်းတိုးတက်စေသည်။