文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

thinkphp5.1支不支持extra

2023-07-04 18:59

关注

本篇文章和大家了解一下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的支持,于是乎自己动手改写了一下

不多说,直接暴力上 代码.

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\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文件夹下的配置文件就会修改为

<?phpreturn ['WEB'=>['web_status' => '1','1','3','4',],];

接下来,在其他控制器中,就可以直接使用config的法则来获取各种配置文件了,具体规则,请移步TP5.1手册配置获取章节.

逻辑程序直接从文件读取配置,用户读取配置,可以设置缓存或者直接从redis里读取.

以上就是thinkphp5.1支不支持extra的简略介绍,当然详细使用上面的不同还得要大家自己使用过才领会。如果想了解更多,欢迎关注编程网行业资讯频道哦!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯