這篇文章主要介紹了thinkPHP框架動態配置用法,結合實例形式分析了thinkPHP3.0之前的動態配置操作技巧及緩存相關操作注意事項,需要的朋友可以參考下
本文實例講述了thinkPHP框架動態配置用法。分享給大家供大家參考,具體如下:
最近在用@ThinkPHP 做系統的時候,要用到一個功能,就要動態的將系統的配置參數保存到Config檔中。以往,我們做系統的時候,專案的設定參數都會直接事先寫入到Config/Config.php檔案中,然後在專案中應用即可。但是,有些項目,使用者需要根據自己的情況將配置參數,透過後台動態的來設定。這種動態的參數配置,一般我們有兩種方式,一種是寫入到資料庫,另一種就是寫入到設定檔。今天,我來說說用設定檔的形式來實現這項功能。
一、設定檔設定
首先,我們在TP專案設定目錄Config下新建一個設定文件,命名為setting .config.php,這個檔案用來保存動態的參數。然後,在專案主設定檔Config.php中用合併陣列的方式,將setting.config.php合併進來。這樣,在整個專案中,即可呼叫setting.config.php中的設定參數了。
二、實作動態管理參數
在後台,建立一個功能,將setting.config.php的預設值讀出,並顯示在一個表單中。這裡可以使用TP的C函數來實現。然後,即可在表單中對各個參數的值進行設定。表單提交保存後,將表單提交的值,進行處理,具體程式碼如下:
setting.config.php檔案的結構
<?php return array( 'setting'=>array( 'tel' => '400-088-7380', 'qq' => '88888888', ...... ), ); ?># #儲存設定參數的運算
function SaveSetting(){ //setting.config.php文件的路径,通过settingfile_path来设定; $setfile='./Home'.C('settingfile_path'); $a=C('setting'); //将默认配置参数的内容赋值给$a; $b=array( 'tel' => $_POST['tel'], 'web' => $_POST['web'], ........ ); //这里将新的参数值,通过后台的表单提交过来; $c=array_merge($a,$b) ;將陣列$a和$b合併;我們知道,
array_merge()函數,可以合併兩個數組,並且如果數組元素具有相同的鍵名,後面的值會覆蓋前面的值(數字鍵名除外);
$settingstr="<?php \n return array(\n'Setting' =>array(\n"; foreach($c as $key=>$v){ $settingstr.= "\t'".$key."'=>'".$v."',\n"; } $settingstr.="),\n);\n?>\n"; file_put_contents($setfile,$settingstr); //通过file_put_contents保存setting.config.php文件;到此,
setting.config.php檔案的設定參數的值,已經更新;
寫入檔案是個陣列不假,但是可以參考一下var_export函數,沒有必要去循環數組了!
$settingstr="<?php \n return array(\n'Setting' =>array(\n"; foreach($c as $key=>$v){ $settingstr.= "\t'".$key."'=>'".$v."',\n"; } $settingstr.="),\n);\n?>\n"; file_put_contents($setfile,$settingstr); //通过file_put_contents保存setting.config.php文件;以上程式碼可以修改為:
#
$settingstr = "<?php \n return array(\n'Setting' =>\n".var_export($c,true)." \n ?>"; file_put_contents($setfile,$settingstr); //通过file_put_contents保存
(Thinkphp3. 1版本,已經支援C函數保存設定的參數值,所以,本方法,適合於3.0及以下版本的TP)
另外,我們知道TP在第一次運行時會把專案所有的設定文件,設定參數等,產生一個runtime快取文件,如果我們更新了congfig 的內容,那麼必須刪除專案中的快取檔案後才能生效。為此,我們讓系統自己來清空緩存,更新參數。程式碼如下:
//RUNTIME_FILE常量是入口文件中配置的runtimefile的路径及文件名; if(file_exists(RUNTIME_FILE)){ unlink(RUNTIME_FILE); //删除RUNTIME_FILE; }
光刪除runtime_file還不夠,要清空Cache資料夾中的檔案;程式碼如下:
$cachedir=RUNTIME_PATH."/Cache/"; //Cache文件的路径; if ($dh = opendir($cachedir)) { //打开Cache文件夹; while (($file = readdir($dh)) !== false) { //遍历Cache目录, unlink($cachedir.$file); //删除遍历到的每一个文件; } closedir($dh); }以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP中文網! 相關推薦:
以上是關於thinkPHP框架動態配置的用法分析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

thinkphp是国产框架。ThinkPHP是一个快速、兼容而且简单的轻量级国产PHP开发框架,是为了简化企业级应用开发和敏捷WEB应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。

本篇文章给大家带来了关于thinkphp的相关知识,其中主要介绍了关于使用think-queue来实现普通队列和延迟队列的相关内容,think-queue是thinkphp官方提供的一个消息队列服务,下面一起来看一下,希望对大家有帮助。

thinkphp基于的mvc分别是指:1、m是model的缩写,表示模型,用于数据处理;2、v是view的缩写,表示视图,由View类和模板文件组成;3、c是controller的缩写,表示控制器,用于逻辑处理。mvc设计模式是一种编程思想,是一种将应用程序的逻辑层和表现层进行分离的方法。

本篇文章给大家带来了关于thinkphp的相关知识,其中主要介绍了使用jwt认证的问题,下面一起来看一下,希望对大家有帮助。

thinkphp扩展有:1、think-migration,是一种数据库迁移工具;2、think-orm,是一种ORM类库扩展;3、think-oracle,是一种Oracle驱动扩展;4、think-mongo,一种MongoDb扩展;5、think-soar,一种SQL语句优化扩展;6、porter,一种数据库管理工具;7、tp-jwt-auth,一个jwt身份验证扩展包。

thinkphp查询库是否存在的方法:1、打开相应的tp文件;2、通过“ $isTable=db()->query('SHOW TABLES LIKE '."'".$data['table_name']."'");if($isTable){...}else{...}”方式验证表是否存在即可。

本篇文章给大家带来了关于ThinkPHP的相关知识,其中主要整理了使用think-queue实现redis消息队列的相关问题,下面一起来看一下,希望对大家有帮助。

在thinkphp3.2中,可以利用define关闭调试模式,该标签用于变量和常量的定义,将入口文件中定义调试模式设为FALSE即可,语法为“define('APP_DEBUG', false);”;开启调试模式将参数值设置为true即可。


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具