လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> Get_inceLude_Path () Spl_Autloudead_register နှင့်အတူ autoload အတန်းအစားကိုမည်သို့အသုံးပြုရမည်နည်း

Get_inceLude_Path () Spl_Autloudead_register နှင့်အတူ autoload အတန်းအစားကိုမည်သို့အသုံးပြုရမည်နည်း

gitbox 2025-05-26

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 သည်ဤလမ်းညွှန်တွင်ထည့်သွင်းရန်လိုအပ်သည့်ဖိုင်များကိုရှာဖွေလိမ့်မည်။

2 ။ spl_autoload_register () function ကိုနားလည်ပါ

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 ကိုအတန်းအမည်အရသက်ဆိုင်ရာဖိုင်ကိုရှာဖွေရန်နှင့်၎င်းကိုမိတ်ဆက်ပေးရန်လိုအပ်သည့်ယုတ္တိဗေဒကိုအကောင်အထည်ဖော်ရန်လိုအပ်သည်။

3 ။ get_include_path () နှင့် spl_autoload_register () အလိုအလျောက်တင်ရန်

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");
});

IV ။ ဖော်ပြချက်

စီမံကိန်းဖွဲ့စည်းပုံမှာအောက်ပါအတိုင်းဖြစ်သည်ဟုယူဆပါ -

 /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 ကိုအလိုအလျောက်ခေါ်ဆိုပြီးသက်ဆိုင်ရာလူတန်းစားဖိုင်ကိုရှာဖွေပြီးလက်ဖြင့်စီမံခန့်ခွဲခြင်းသင်တန်းများကိုကိုယ်တိုင်ပြုလုပ်ပါ။

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

  • 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 စီမံကိန်းစီမံခန့်ခွဲမှုပိုမိုလွယ်ကူပြီးပိုမိုထိရောက်လိမ့်မည်။