但是查詢多方資料,未能找到可以靜態修改配置,tp5.1
提供的config::set()函式只能動態的修改配置檔案,而且僅限於本控制器內,實際配置檔案並沒有改變,這顯然不符合我們的要求.
經查詢多方資料後,發現這篇最為靠譜,但是實測無效,
進入config函式後,發現tp5.1
中,config函式已經取消了extra的支援,於是乎自己動手改寫了一下.如果您使用的是tp5.0的框架,請移步這裡.
不多說,直接暴力上**
.
/**
* 修改擴充套件配置檔案
* @param array $arr 需要更新或新增的配置
* @param string $user 修改人
* @return bool
*/function
editconfig
($arr=[
],$user
='admin')}
//判定許可權是否足夠if(
!is_writable
($filepath))
//遍歷整個配置檔案
$conf
=include
$filepath
;foreach
($arr
as$key
=>
$value
)//記錄修改者
$time
=date
('y/m/d h:i:s');
$str
="<?php\r\n/**\r\n * 由"
.$user
."修改.\r\n * $time
\r\n */\r\nreturn [\r\n"
;//寫入配置檔案
foreach
($conf
as$key
=>
$value
)else
}$str
=rtrim
($str
,',');
$str.=
"\t],"
."\r\n";}
else
}$str.=
'];'
;//關閉檔案
$result
=file_put_contents
($filepath
,$str);
if($result
)else
}else
}
範例:
在**根目錄的config資料夾中建立乙個business.php檔案(注意讀寫許可權),
控制器中呼叫修改函式
public
function
setbusiness()
elseif
($result
=='error'
)elseif
($result
=='permissionerror'
)}
config資料夾下的配置檔案就會修改為
<?php
/** * 由admin123修改.
* 2019/11/22 13:00:27
*/return
['web'
=>
['web_status'
=>
'1',
'1',
'3',
'4',],
];
接下來,在其他控制器中,就可以直接使用config的法則來獲取各種配置檔案了,具體規則,請移步tp5.1手冊配置獲取章節.
邏輯程式直接從檔案讀取配置,使用者讀取配置,可以設定快取或者直接從redis裡讀取.
參考文章:
thinkphp5 1 匯入excel檔案
public function importexcel 限制上傳 型別 ext substr strrchr files file name 1 if ext xls ext xlsx 讀取 filename files file tmp name reader iofactory createre...
thinkphp5 1的安裝與初步使用
1.安裝composer 出現如上邊所示表示安裝成功此時建議在安裝中文映象執行如下命令 composer config g repo.packagist composer安裝好之後就進行專案安裝找到自己專案所在位址www資料夾目錄下邊 在終端將形目位址切換到www目錄下邊然後在 在上邊 上選擇自己所...
ThinkPHP5 1鉤子和行為
tp5.1的行為是乙個比較抽象的概念,執行的流程使用者的註冊,登入,退出登入等等都可以作為乙個行為。而不同的行為之間也具有位置共同性,比如,有些行為的作用位置在使用者註冊後,在登入之後,退出登入之後,等等有些行為的作用位置都是在應用執行前,有些行為都是在模板輸出之後,把這些行為發生作用的位置稱之為鉤...