本篇文章和大家了解一下thinkphp5.1支不支持extra。有一定的參考價值,有需要的朋友可以參考一下,希望對大家有所幫助。
創(chuàng)新互聯(lián)是一家專注于成都網(wǎng)站制作、成都做網(wǎng)站與策劃設計,下城網(wǎng)站建設哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設十余年,網(wǎng)設計領域的專業(yè)建站公司;建站業(yè)務涵蓋:下城等地區(qū)。下城做網(wǎng)站價格咨詢:18980820575
thinkphp5.1不支持extra,thinkphp5.1中config函數(shù)已經(jīng)取消了extra的支持;可以將“function editConfig($arr = [] ,$user='admin'){...}”代碼貼入app或者application文件夾內(nèi)的common.php中即可全局使用該函數(shù)。
thinkphp5.1是否支持extra?
不支持。
ThinkPHP5.1 使用文件作為配置文件
ThinkPHP5.1 使用文件作為配置文件的踩坑記錄
使用Tp5.1(版本限定)作為App后臺的時候,用戶頻繁的請求,每一步操作都要訪問數(shù)據(jù)庫,每一步操作都要訪問到 config 配置表,頻繁的讀取使數(shù)據(jù)庫壓力山大,在后臺監(jiān)控流量,發(fā)現(xiàn)將近30%的請求都是在訪問config表,所以決定將配置固話到本地,使用文件作為配置.
但是查詢多方資料,未能找到可以靜態(tài)修改配置,Tp5.1提供的Config::set()函數(shù)只能動態(tài)的修改配置文件,而且僅限于本控制器內(nèi),實際配置文件并沒有改變,這顯然不符合我們的要求.
經(jīng)查詢多方資料后,發(fā)現(xiàn)這篇最為靠譜,但是實測無效,
進入config函數(shù)后,發(fā)現(xiàn)Tp5.1中,config函數(shù)已經(jīng)取消了extra的支持,于是乎自己動手改寫了一下
不多說,直接暴力上 代碼.
/**
* 修改擴展配置文件
* @param array $arr 需要更新或添加的配置
* @param string $user 修改人
* @return bool
*/
function editConfig($arr = [] ,$user='admin')
{
if (is_array($arr)) {
//獲取文件名
$filename = 'business.php';
//獲取配置文件環(huán)境變量位置(請確保開啟權限,如若報錯,請改為絕對路徑)
$filepath = Env::get('CONFIG_PATH'). $filename;
//判定配置文件是否存在
if (!file_exists($filepath) ) {
if(!fopen($filepath, "w")){
return 'PermissionError1';
}
}
//判定權限是否足夠
if (!is_writable($filepath)) {
return 'PermissionError2';
}
//遍歷整個配置文件
$conf = include $filepath;
foreach ($arr as $key => $value) {
$conf[$key] = $value;
}
//記錄修改者
$time = date('Y/m/d H:i:s');
$str = " $value) {
if(is_array($value)){
$str.="\t'$key'=>[\r\n";
foreach ($value as $ikey=>$r) {
if(is_numeric($ikey)){
$str .= "\t\t'$r',";
$str .= "\r\n";
}else{
$str .= "\t\t'$ikey' => '$r',";
$str .= "\r\n";
}
}
$str = rtrim($str,',');
$str .= "\t],"."\r\n";
} else{
$str .= "\t'$key' => '$value',";
$str .= "\r\n";
}
}
$str .= '];';
//關閉文件
$result = file_put_contents($filepath, $str);
if($result){
return 'success';
} else {
return $result;
}
} else {
return 'error';
}
}
將本段代碼貼入app(或者application)文件夾內(nèi)的common.php中,即可全局使用該函數(shù),進行修改配置文件.
范例:
在網(wǎng)站根目錄的config文件夾中建立一個business.php文件(注意讀寫權限),
控制器中調(diào)用修改函數(shù)
public function setBusiness(){
$arr = array(
"WEB" => [
"web_status"=>'1',
1,3,4
],
);
$result=editConfig($arr,'admin123');
if($result=='success'){
echo ('修改成功');
}elseif($result=='error'){
echo ('修改失敗');
}
elseif($result=='PermissionError'){
echo ('文件無權限,請聯(lián)系管理員');
}
}
config文件夾下的配置文件就會修改為
[
'web_status' => '1',
'1',
'3',
'4',
],
];
接下來,在其他控制器中,就可以直接使用config的法則來獲取各種配置文件了,具體規(guī)則,請移步TP5.1手冊配置獲取章節(jié).
邏輯程序直接從文件讀取配置,用戶讀取配置,可以設置緩存或者直接從redis里讀取.
以上就是thinkphp5.1支不支持extra的簡略介紹,當然詳細使用上面的不同還得要大家自己使用過才領會。如果想了解更多,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道哦!