Multi-module php စနစ်များကိုရေးဆွဲသည့်အခါ, စီမံကိန်းတစ်ခုတွင် module များစွာသည်တူညီသောအဆက်မပြတ်နာမည်တူတူသို့မဟုတ်ပါဝင်သော အဆက်မပြတ် သီးခြားအဓိပ္ပါယ်ဖွင့်ဆိုချက်များနှင့်တူညီသောအဓိပ္ပာယ်ဖွင့်ဆိုချက်ကိုရည်ညွှန်းခြင်း, ဤအမှားကိုကာကွယ်ရန်ကျွန်ုပ်တို့သည် PHP built-in function ကို အသုံးပြု. သတ်မှတ်ခြင်း ဖြင့်အကြိမ်ကြိမ်သတ်မှတ်ထားသောကိန်းဂဏန်းများကိုမကြာခဏသတ်မှတ်ခြင်းကိုရှောင်ရှားနိုင်သည်။
PHP တွင်၎င်းတို့သည်သတ်မှတ်ထားသောတစ်ချိန်က PHP တွင်အမြဲတမ်းပြန်လည်သတ်မှတ်မရနိုင်ပါ။ အကယ်. ပရိုဂရမ်တွင်ဖိုင်များသို့မဟုတ် module များစွာသည်တူညီသောအဆက်မပြတ်အမည်ကိုသတ်မှတ်ပါက PHP သည်များသောအားဖြင့်ဤကဲ့သို့သောဆိုးဝါးသောအမှားတစ်ခုပြုလုပ်လိမ့်မည်။
Fatal error: Constant 'CONSTANT_NAME' already defined
အကယ်. ဤပြ problem နာကိုကိုင်တွယ်ခြင်းမရှိသေးပါကစနစ်အားပျက်ကျစေနိုင်သည်သို့မဟုတ်စနစ်တကျလည်ပတ်ရန်ပျက်ကွက်နိုင်သည်။
သတ်မှတ်ထားသော () သည် PHP တွင်ပါ 0 င်သော function တစ်ခုဖြစ်သည်။ စဉ်ဆက်မပြတ်တည်ရှိပြီးဖြစ်သောကြောင့်၎င်းကိုကျွန်ုပ်တို့အသုံးပြုနိုင်သည်။ ထို့နောက်မတည်ရှိပါက၎င်းကိုအဓိပ္ပါယ်ဖွင့်ဆိုချက်ကိုရှောင်ပါ။
သဒ္ဒါ:
defined('CONSTANT_NAME')
စဉ်ဆက်မပြတ် ကွန်မန်အမြစ်တွယ်နေသော onname ကို သတ်မှတ်ထားပါက သတ်မှတ်ထားသော () မှန်ကန်စွာ ပြန်လည်ရောက်ရှိပါ က ,
ကျွန်ုပ်တို့သည် Module php system ကို Multi-Module php system ကိုတီထွင်နေသည်ဟုဆိုပါစို့ ။ စဉ်ဆက်မပြတ်သတ်မှတ်ခြင်းရှိမရှိမစစ်ဆေးပါကကျွန်ုပ်တို့သည်ထပ်တူအဓိပ္ပါယ်ဖွင့်ဆိုချက်ကိုတွေ့ကြုံခံစားနိုင်သည်။ ဤပြ problem နာကိုအောက်ပါနည်းလမ်းများဖြင့်ဖြေရှင်းနိုင်သည်။
// တည်နေconfig.phpအတွက်အမြဲတမ်းသတ်မှတ်ပါ
if (!defined('SITE_URL')) {
define('SITE_URL', 'http://m66.net');
}
အထက်ပါဥပမာတွင် consinant site_url ကို သတ်မှတ်ထားသော ('site_url') ကို သတ်မှတ် . သတ်မှတ်ခြင်းရှိမရှိပထမဆုံးစစ်ဆေးသည်။ အဓိပ္ပာယ်မရှိပါက၎င်းကိုသတ်မှတ်ရန်သတ်မှတ်ရန် သတ်မှတ်ခြင်း () ကို ခေါ်ဆိုပါ။ ၎င်းသည်ကွဲပြားခြားနားသော module များရှိ Constants ၏ထပ်ခါတလဲလဲအဓိပ္ပာယ်ဖွင့်ဆိုချက်ကိုထိရောက်စွာရှောင်ရှားနိုင်သည်။
အကယ်. သင်၏ PHP စီမံကိန်းဖွဲ့စည်းပုံသည်အတော်အတန်ရှုပ်ထွေးပါကအမြဲတမ်းလိုအပ်သည့်ဖိုင်များစွာရှိနိုင်သည်။ ဖိုင်တစ်ခုစီသို့ထိုကဲ့သို့သောတရားစီရင်ချက်ထုတ်ပြန်ချက်များကိုထည့်သွင်းခြင်းအားဖြင့်ကိန်းသားများကိုအကြိမ်ပေါင်းများစွာမသတ်မှတ်ထားပါနှင့်။ ဥပမာအားဖြင့်, modulea.php နှင့် Moduleb.php တို့တွင် Modulea.php နှင့် Moduleb.php တို့ဖြစ်သည်ဆိုပါစို့ ။
modulea.php :
<?php
// တည်နေModuleAအတွင်းစဉ်ဆက်မပြတ်သုံးပါ
if (!defined('SITE_URL')) {
define('SITE_URL', 'http://m66.net');
}
// Constants ကိုသုံးပါ
echo SITE_URL;
Moduleb.php :
<?php
// တည်နေModuleBအတွင်းစဉ်ဆက်မပြတ်သုံးပါ
if (!defined('SITE_URL')) {
define('SITE_URL', 'http://m66.net');
}
// Constants ကိုသုံးပါ
echo SITE_URL;
အကယ်. ထည့်သွင်းခြင်းအားဖြင့် (! သတ်မှတ်ထားခြင်း ('site_url')) module ဖိုင်တစ်ခုစီကိုစစ်ဆေးပါ။
ကြီးမားသော PHP စနစ်များကိုရေးဆွဲသည့်အခါကျွန်ုပ်တို့သည်များသော အား ဖြင့် , ဤကိစ္စတွင်ဖိုင်တစ်ဖိုင်ကိုအကြိမ်ကြိမ်တင်လျှင်စဉ်ဆက်မပြတ်ကိုထပ်ခါတလဲလဲသတ်မှတ်ရန်ဖြစ်နိုင်သည်။ ဤပြ problem နာကိုဖြေရှင်းရန် Constitian ကိုပထမ ဦး ဆုံးအကြိမ်တင်ချိန်မှသာသတ်မှတ်ထားသည့်အချိန်မှသာသတ်မှတ်ထားရန်သေချာစေရန်ဖိုင်တစ်ခုစီသို့စစ်ဆေးမှုကိုထည့်သွင်းနိုင်သည်။
ဥပမာအားဖြင့်, Public Configuration file config.php , Global Configuration နှင့် Configuration နှင့် configuration နှင့် system ၏အဓိပ္ပါယ်ဖွင့်ဆိုချက်ပါ 0 င်သည်ဆိုပါစို့။
// config.php
if (!defined('SITE_URL')) {
define('SITE_URL', 'http://m66.net');
}
ထို့နောက်အခြား module များက config.php ကို စတင်မိတ်ဆက်သည်သို့မဟုတ်လည်ပတ်မှုများကိုလိုအပ်သည့်နေရာများရှိ သည့် သို့မဟုတ် လိုအပ်သည် ။
// ModuleA.php
include 'config.php';
// Constants ကိုသုံးပါ
echo SITE_URL;
ဤနည်းအားဖြင့် Config.php ကို အကြိမ်ပေါင်းများစွာမိတ်ဆက်မည်ဖြစ်သော်လည်းစဉ်ဆက်မပြတ် site_Url ကို တစ်ကြိမ်သာသတ်မှတ်ပြီးထပ်ခါတလဲလဲဖော်ပြချက်အမှားများကိုရှောင်ရှားလိမ့်မည်။
multi-module php စနစ်ကိုတီထွင်သည့်အခါထပ်ခါတလဲလဲအဓိပ္ပာယ်ဖွင့်ဆိုချက်များကြောင့်ဖြစ်ပေါ်လာသောအမှားများကိုကာကွယ်ရန်ကျွန်ုပ်တို့သည်၎င်းကို သတ်မှတ်ထားသော () function ကို ဖြတ်. စစ်ဆေးနိုင်သည်။ စဉ်ဆက်မပြတ်သတ်မှတ်ခြင်းမပြုမီ, စဉ်ဆက်မပြတ်သတ်မှတ်ထားခြင်းရှိမရှိစစ်ဆေးပါ။ အကယ်. ၎င်းကိုမသတ်မှတ်ပါကစဉ်ဆက်မပြတ်သည်တစ်ကြိမ်တည်းမှသာသတ်မှတ်လိမ့်မည်။ ဤနည်းလမ်းအားဖြင့်ထပ်ခါတလဲလဲဖော်ပြသောအဓိပ္ပာယ်ဖွင့်ဆိုချက်များကြောင့်ဖြစ်ပေါ်လာသောအမှားများကိုထိရောက်စွာရှောင်ရှားနိုင်ပြီးစနစ်တည်ငြိမ်။ ခိုင်မာသည်။