thinkphp动态修改、创建配置文件
问题:开发中有些数据会经常访问,但是也会参与存储。调用多,修改少。所以使用配置文件的形式。
解决办法:
将数据以配置文件的形式存储,可修改,可读取
- 第一步, 定义数据目录
//在入口文件index.php添加文件位置,如果你添加了其它模块,就再对应的模块修改
// 定义数据目录,可更改此目录
define('CMF_DATA', CMF_ROOT . 'data/config/');
- 构建方法
public function extraconfig($arr = [], $file ,$user='admin')
{
if (is_array($arr)) {
$filename = $file;
//文件位置,根据你之前的去修改
$filepath = CMF_DATA . 'config/' . $filename.".php";
if (!file_exists($filepath) ) {
if(!fopen($filepath, "w")){
return 'PermissionError1';
}
}
if (!is_writable($filepath)) {
return 'PermissionError2';
}
$conf = array();
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'=>[";
foreach ($value as $r) {
$str .= "'$r',";
}
$str = rtrim($str,',');
$str .= ']'."\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';
}
}
- 使用方法
public function index(){
$arr = array(
'title' => input('title'),
'keywords' => input('keywords'),
'description' => input('description'),
);
$user='阿力';
$result= $this->extraconfig($arr,'seo',$user);
if($result=='success'){
$this->success('修改成功');
}elseif($result=='error'){
$this->error('修改失败,请重试');
}
elseif($result=='PermissionError'){
$this->error('文件无权限,请联系管理员');
}
}
- 读取数据,这个就没啥可多说的了,直接调用thinkphp的方法即可
//助手函数
config("wechat.jifen.exchange",80);
//门面
Config::set("wechat.jifen.exchange",80);