PHP စီမံကိန်းများစွာဖွံ့ဖြိုးလာသောအခါအချို့သော module များသို့မဟုတ်စာကြည့်တိုက်များရှိသည့်အခြေအနေများအကြားမျှဝေရန်လိုအပ်သည့်အခြေအနေများမကြာခဏကြုံတွေ့ရလေ့ရှိသည်။ ဥပမာအားဖြင့်စိစစ်အတည်ပြုစာကြည့်တိုက်, မှတ်တမ်းစနစ်, ပြင်ဆင်ခြင်းစီမံခန့်ခွဲမှုစီမံခန့်ခွဲမှုစသည်တို့ကိုစီမံကိန်းတစ်ခုစီတွင်ထပ်ခါတလဲလဲရေးသားခြင်းကိုရှောင်ရှားရန်ကျွန်ုပ်တို့သည်များသောအားဖြင့်သီးခြားကုဒ်အခြေစိုက်စခန်းထဲသို့ထုတ်ယူလေ့ရှိပြီးစီမံကိန်းမျိုးစုံဖြင့်၎င်းတို့ကိုမျှဝေပါ။
PHP ၏ Get_includude_Path () နှင့် set_include_Path () functions များသည်ကြော့ရှင်းသောလမ်းကြောင်းစီမံခန့်ခွဲမှုယန္တရားဖြင့်ပေးပြီးစီမံကိန်းများပိုမိုပြောင်းလွယ်ပြင်လွယ်နှင့်ထိန်းသိမ်းခြင်းတို့တွင် Code ကိုမျှဝေခြင်းကိုမျှဝေသည်။ ဤဆောင်းပါးသည်စီမံကိန်းပေါင်းစုံပတ်ဝန်းကျင်ရှိအများပြည်သူသုံးဖိုင်လမ်းကြောင်းများ၏စည်းလုံးညီညွတ်မှုစီမံခန့်ခွဲမှုရရှိရန်ဤလုပ်ဆောင်မှုများကိုမည်သို့အသုံးပြုရမည်ကိုအသေးစိတ်ဖော်ပြထားသည်။
Continue_path သည် Executing တွင် ဖိုင်များကိုရှာဖွေရန်အတွက်ဖိုင်များကိုရှာဖွေရန် default directory စာရင်းဖြစ်သည် ။ current_path ကို get_includude_path () ကိုဖြတ်ပြီး charm_include_path မှတစ်ဆင့်ကြည့်ရှုနိုင်သည်။
echo get_include_path();
ပုံမှန် output ကိုဤကဲ့သို့သောဖြစ်နိုင်သည်:
.:/usr/local/lib/php
ဆိုလိုသည်မှာ PHP သည်လက်ရှိ directory တွင်သင်ထည့်လိုသည့်ဖိုင်ကို ဦး စွာရှာဖွေလိမ့်မည်ဟုဆိုလိုသည် ။ အကယ်. ၎င်းကိုမတွေ့နိုင်ပါက / USR / local / Lib / Php သို့သွားပါ။
ကျွန်ုပ်တို့သည် logger.php နှင့် validator.php ကဲ့သို့သောမျှဝေထားသောအတန်းများနှင့်လုပ်ငန်းဆောင်တာများပါ 0 င်သည့်ဆာဗာ၏ / shap-shap-shap-shap / director / diremrary တွင်တည်ရှိသောအများပြည်သူဆိုင်ရာစာကြည့်တိုက်ရှိသည်ဟုမြင်ယောင်ကြည့်ပါ။
စီမံကိန်းတစ်ခုစီတွင်ဤမျှဝေစာကြည့်တိုက်သို့အကြွင်းမဲ့လမ်းကြောင်းကိုဂရုမစိုက်ရန်ကျွန်ုပ်တို့မျှော်လင့်ပါသည်။ ၎င်းကိုအောက်ပါအတိုင်းရည်ညွှန်းရန်လိုအပ်ပါသည်။
require_once 'Logger.php';
၎င်းကိုအောင်မြင်ရန်စီမံကိန်းရေးရာဖိုင်တွင်ထည့်သွင်းမှုများကိုကျွန်ုပ်တို့ပြောင်းလဲနိုင်သည်။
$sharedLibPath = '/var/shared/php-lib/';
$currentIncludePath = get_include_path();
$newIncludePath = $sharedLibPath . PATH_SEPARATOR . $currentIncludePath;
set_include_path($newIncludePath);
ယခု logger.php သည် အကြွင်းမဲ့လမ်းကြောင်းရေးသားခြင်းမရှိဘဲလက်ရှိစီမံကိန်းတွင်တိုက်ရိုက် လိုအပ်သည့်အတွက်တိုက်ရိုက်လိုအပ်သည် ။
အကယ်. သင်၏စီမံကိန်းသည်အလိုအလျောက် 0 င်ရောက်ခြင်းယန္တရားကိုအသုံးပြုသည် (PSR-4 သို့မဟုတ် PSR-0 ကဲ့သို့သော directory) သည်အလိုအလျောက်တင်ရန်အတွက်မျှဝေထားသော directory ကို namestace သို့မြေပုံဆွဲနိုင်သည် ။
spl_autoload_register(function ($class) {
include $class . '.php';
});
ဤအချိန်တွင်လူတန်းစားဖိုင်သည်မျှဝေထားသောလမ်းကြောင်းတွင်တည်ရှိပြီးအမည်နှင့်လမ်းညွှန်ဖွဲ့စည်းပုံသည်တသမတ်တည်းရှိနေသမျှကာလပတ်လုံး၎င်းကိုအလိုအလျောက်ဖွင့်နိုင်သည်။
ပြောင်းလွယ်ပြင်လွယ်မှုကိုမြှင့်တင်ရန်ကျွန်ုပ်တို့သည် Path Managements ကို bootstrap ကို ဖန်တီးခြင်းကဲ့သို့သောစတင် scripts များအဖြစ် admissuate လုပ်နိုင်ပါတယ်။
<?php
// bootstrap.php
$sharedLibPath = '/var/shared/php-lib/';
set_include_path($sharedLibPath . PATH_SEPARATOR . get_include_path());
spl_autoload_register(function ($class) {
include $class . '.php';
});
ဤဖိုင်ကိုစီမံကိန်းတစ်ခုစီ၏ဝင်ပေါက်တွင်မိတ်ဆက်ပါ။
require_once '/var/shared/php-lib/bootstrap.php';
developer တချို့ developer များက Remote code ကို URLs များမှတဆင့်တိုက်ရိုက်ထုတ်လွှင့်ခြင်းဖြစ်နိုင်သည်။
include 'https://gitbox.net/shared/Logger.php';
အချို့သောအခြေအနေများတွင်၎င်းကိုဖြစ်နိုင်ချေရှိစဉ်အတွင်းလုံခြုံရေးနှင့်စွမ်းဆောင်ရည်အကြောင်းရင်းများအတွက်အကြံပြုသည်မဟုတ်ပါ။ အဝေးမှ loaded code သည်အနှောင့်အယှက်ဖြစ်စေနိုင်သည့်အန္တရာယ်ရှိနိုင်သည်။ ရရှိနိုင်မှုနှင့်အမြန်နှုန်းကိုသေချာစေရန်ခက်ခဲသည်။ ပိုမိုကောင်းမွန်သောနည်းတစ်နည်းမှာ Shared code base ကိုသင်၏စီမံကိန်းသို့ဒေသတွင်းတွင်ပါ 0 င်ရန်မှီခိုအားထားမှုကိုစီမံခန့်ခွဲရန် Git submodules သို့မဟုတ် composer ကိုအသုံးပြုရန်ဖြစ်သည်။
သို့သော် အကယ်. သင်သည်ဤကဲ့သို့သောဝေးလံခေါင်သီသောရည်ညွှန်းကိုးကားလိုပါက ယုံကြည် စိတ်ချရသောရင်းမြစ်ကိုအသုံးပြုရန်သေချာအောင်လုပ်ပါ။
ini_set('allow_url_include', 1);
include 'https://gitbox.net/shared/Validator.php';
ထပ်မံ. ဤအလေ့အကျင့်ကိုထုတ်လုပ်မှုပတ် 0 န်းကျင်တွင်ရှောင်ရှားသင့်သည်။
Get_intude_Path () နှင့် set_include_path ကို အသုံးပြုခြင်း PHP စီမံကိန်းများအတွက်ထိရောက်သောမျှဝေထားသောကုဒ်ယန္တရားတစ်ခုတည်ဆောက်နိုင်သည်။ Code Reuse နှုန်းကိုတိုးတက်စေရုံသာမကစီမံကိန်းတည်ဆောက်ပုံကိုပိုမိုရှင်းလင်းစွာပြုလုပ်နိုင်သည်။ လမ်းကြောင်းများကိုပြင်ဆင်ခြင်းနှင့်အလိုအလျောက် loader ကိုပေါင်းစပ်ခြင်းအားဖြင့်စီမံကိန်းမျိုးစုံအကြားယုတ္တိဗေဒဆိုင်ရာ module များအားလုံးကိုအပြည့်အ 0 မျှဝေခြင်းကိုပင်သင်အောင်မြင်နိုင်သည်။
သို့သော်ပေါင်းစည်းထားသောလမ်းကြောင်းဆိုင်ရာပြင်ဆင်မှုအတွက်ရှင်းရှင်းလင်းလင်းသတ်မှတ်ချက်များရှိသင့်သည်။ စီမံကိန်းတစ်ခုချင်းစီ၏အစတွင်ပေါင်းစည်းထားသောအစုံအလင်တစ်ခုစီကိုအကောင်အထည်ဖော်ရန်အကြံပြုသည်။ စီမံကိန်းအတွင်းရှိခက်ခဲသော directory startage များပေါ်တွင်မှီခိုရန်လမ်းကြောင်းပြင်ဆင်မှုကိုစိတ်တဇဖော်ပြရန်အကြံပြုသည်။ ၎င်းသည်စီမံကိန်းပေါင်းစုံပူးပေါင်းမှုကိုချောမွေ့စေပြီးကုန်ကျစရိတ်သက်သာစေသည်။