thinkphp5.1不支援extra,thinkphp5.1中config函數已經取消了extra的支援;可以將「function editConfig($arr = [] ,$user='admin'){...} 」程式碼貼入app或application資料夾內的common.php中即可全域使用該函數。
本教學操作環境:Windows7系統、ThinkPHP5版、Dell G3電腦。
thinkphp5.1是否支援extra?
不支援。
ThinkPHP5.1 使用檔案作為設定檔
ThinkPHP5.1 使用檔案作為設定檔的踩坑記錄
使用Tp5.1(版本限定)作為App後台的時候,用戶頻繁的請求,每一步操作都要訪問數據庫,每一步操作都要訪問到config 配置表,頻繁的讀取使數據庫壓力山大,在後台監控流量,發現將近30%的請求都是在訪問config表,所以決定將配置固話到本地,使用檔案作為配置.
但是查詢多方資料,未能找到可以靜態修改配置,Tp5.1提供的Config::set()函數只能動態的修改設定檔,而且僅限於本控制器內,實際設定檔並沒有改變,這顯然不符合我們的要求.
經查詢多方資料後,發現這篇最為可靠,但是實測無效,
進入config函數後,發現Tp5.1中,config函數已經取消了extra的支援,於是乎自己動手改寫了一下
不多說,直接暴力上程式碼.
/** * 修改扩展配置文件 * @param array $arr 需要更新或添加的配置 * @param string $user 修改人 * @return bool */ function editConfig($arr = [] ,$user='admin') { if (is_array($arr)) { //获取文件名 $filename = 'business.php'; //获取配置文件环境变量位置(请确保开启权限,如若报错,请改为绝对路径) $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 = "<?php\r\n/**\r\n * 由".$user."修改.\r\n * $time\r\n */\r\nreturn [\r\n"; //写入配置文件 foreach ($conf as $key => $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)資料夾內的common.php中,即可全域使用該函數,進行修改設定檔.
範例:
在網站根目錄的config資料夾中建立一個business.php檔案(注意讀取和寫入權限),
控制器中呼叫修改函數
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 ('文件无权限,请联系管理员'); } }
config資料夾下的配置檔案就會修改為
<?php /** * 由admin123修改. * 2019/11/22 13:00:27 */ return [ 'WEB'=>[ 'web_status' => '1', '1', '3', '4', ], ];
接下來,在其他控制器中,就可以直接使用config的法則來取得各種設定檔了,具體規則,請移步TP5.1手冊設定取得章節.
邏輯程式直接從檔案讀取配置,使用者讀取配置,可以設定快取或直接從redis讀取.
推薦學習:《thinkPHP影片教學 》
以上是thinkphp5.1是否支援extra的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本文討論了ThinkPHP的內置測試框架,突出了其關鍵功能(例如單元和集成測試),以及它如何通過早期的錯誤檢測和改進的代碼質量來增強應用程序可靠性。

本文討論了在無服務器體系結構中使用ThinkPHP的關鍵注意事項,專注於性能優化,無狀態設計和安全性。它突出了諸如成本效率和可擴展性之類的收益,但也應對挑戰

本文討論了在ThinkPHP微服務中實施服務發現和負載平衡,重點是設置,最佳實踐,集成方法和推薦工具。[159個字符]

ThinkPHP的IOC容器提供了高級功能,例如懶惰加載,上下文綁定和方法注入PHP App中有效依賴性管理的方法。Character計數:159

ThinkPHP具有輕巧的設計,MVC架構和可擴展性。它通過各種功能提高可擴展性,加快開發並提高安全性。

本文概述了使用ThinkPhp和RabbitMQ構建分佈式任務隊列系統,重點是安裝,配置,任務管理和可擴展性。關鍵問題包括確保高可用性,避免常見的陷阱,例如不當


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

SublimeText3 Linux新版
SublimeText3 Linux最新版

Dreamweaver CS6
視覺化網頁開發工具

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中