thinkphp5.1支不支持extra


本篇文章和大家了解一下thinkphp5.1支不支持extra。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。 thinkphp5.1不支持extra,thinkphp5.1中config函数已经取消了extra的支持;可以将“function editConfig($arr = [] ,$user=’admin’){…}”代码贴入app或者application文件夹内的common.php中即可全局使用该函数。
thinkphp5.1是否支持extra?不支持。ThinkPHP5.1 使用文件作为配置文件ThinkPHP5.1 使用文件作为配置文件的踩坑记录使用Tp5.1(版本限定)作为App后台免费云主机域名的时候,用户频繁的请求,每一步操作都要访问数据库,每一步操作都要访问到 config 配置表,频繁的读取使数据库压力山大,在后台监控流量,发现将近30%的请求都是在访问config表,所以决定将配置固话到本地,使用文件作为配置.但是查询多方资料,未能找到可以静态修改配置,Tp5.1提供的Config::set()函数只能动态的修改配置文件,而且仅限于本控制器内,实际配置文件并没有改变,这显然不符合我们的要求.经查询多方资料后,发现这篇最为靠谱,但是实测无效,进入config函数后,发现Tp5.1中,config函数已经取消了extra的支持,于是乎自己动手改写了一下不多说,直接暴力上 代码.

/**
*修改扩展配置文件
*@paramarray$arr需要更新或添加的配置
*@paramstring$user修改人
*@returnbool
*/
functioneditConfig($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($arras$key=>$value){
$conf[$key]=$value;
}
//记录修改者
$time=date('Y/m/dH:i:s');
$str="$value){
if(is_array($value)){
$str.="t'$key'=>[rn";
foreach($valueas$ikey=>$r){
if(is_numeric($ikey)){
$str.="tt'$r',";
$str.="rn";
}else{
$str.="tt'$ikey'=>'$r',";
$str.="rn";
}
}
$str=rtrim($str,',');
$str.="t],"."rn";
}else{
$str.="t'$key'=>'$value',";
$str.="rn";
}
}
$str.='];';
//关闭文件
$result=file_put_contents($filepath,$str);
if($result){
return'success';
}else{
return$result;
}
}else{
return'error';
}
}

将本段代码贴入app(或者application)文件夹内的common.php中,即可全局使用该函数,进行修改配置文件.范例:在网站根目录的config文件夹中建立一个business.php文件(注意读写权限),控制器中调用修改函数

publicfunctionsetBusiness(){
$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文件夹下的配置文件就会修改为

[
'web_status'=>'1',
'1',
'3',
'4',
],
];

接下来,在其他控制器中,就可以直接使用config的法则来获取各种配置文件了,具体规则,请移步TP5.1手册配置获取章节.逻辑程序直接从文件读取配置,用户读取配置,可以设置缓存或者直接从redis里读取.以上就是thinkphp5.1支不支持extra的简略介绍,当然详细使用上面的不同还得要大家自己使用过才领会。如果想了解更多,欢迎关注百云主机行业资讯频道哦!

相关推荐: 怎么用C语言代码实现猜数字小游戏

这篇“怎么用C语言代码实现猜数字小游戏”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么用C语言代码实现猜数字小游戏”文章吧。做任何一个小项目之…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 02/26 22:58
下一篇 02/26 22:58

相关推荐