thinkphp5.1是否支持extra

thinkphp5.1不支持extra,thinkphp5.1中config函数已经取消了extra的支持;可以将“function editConfig($arr = [] ,$user=’admin’){…}”代码贴入app或者application文件夹内的common.php中即可全局使用该函数。

thinkphp5.1是否支持extra

本教程操作环境:Windows7系统、ThinkPHP5版、Dell G3电脑。

thinkphp5.1是否支持extra?

不支持。

ThinkPHP5.1 使用文件作为配置文件

立即学习“PHP免费学习笔记(深入)”;

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 = " $value) {            if(is_array($value)){                $str.="t'$key'=>[rn";                foreach ($value as $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文件(注意读写权限),

控制器中调用修改函数

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

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

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

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

推荐学习:《thinkPHP视频教程》

以上就是thinkphp5.1是否支持extra的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/67026.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月12日 09:59:36
下一篇 2025年11月12日 10:22:01

相关推荐

  • Oracle EXTRACT()函数

    /Oracle中extract()函数从oracle 9i中引入,用于从一个date或者interval类型中截取到特定的部分 //语法如下: EXTRACT ( { YEAR | MONTH | DAY | HOUR | MINUTE | SECOND } | { TIMEZONE_HOUR | …

    数据库 2025年12月2日
    000
  • thinkphp5.1和php、vue.js实现前后端分离和交互

    下面由thinkphp框架教程栏目给大家介绍thinkphp5.1和php、vue.js实现前后端分离和交互,希望对需要的朋友有所帮助! 主要目标是使用vue.js把前端获取的账号和密码传到后台,然后使用tp5.1框架获取前端的值,并返回token等一些值。然后使用localstorage.seti…

    PHP框架 2025年11月15日
    000
  • 解决thinkphp5.1上传宝塔服务器报错问题

    下面由%ignore_a_1%教程栏目给大家介绍thinkphp5.1上传宝塔服务器报错的解决方法,希望对需要的朋友有所帮助! 解决方法一:把宝塔的open_basedir选项不勾选,这样网站就可以访问了,但是不安全,放跨域攻击就没有了,其他解决方法还没有找到 相关教程推荐:《宝塔》 以上就是解决t…

    2025年11月15日
    000
  • 分析 thinkphp5 显示render不兼容问题

    下面thinkphp框架教程栏目将给大家介绍关于tp5自定义全局异常处理提示render不兼容问题,希望对需要的朋友有所帮助! 【填坑】TP5自定义全局异常处理提示render不兼容 TP5自定义全局异常处理,所有抛出的异常都通过自定义render方法渲染,再返回客户端显示。需要自定义handle的…

    2025年11月13日 PHP框架
    000
  • ThinkPhp5.1 + PHPExcel制作数据导入

    数据导入,在很多地方都会有需要,如何使用thinkphp5.1制作数据导入,接下来小编带大家去了解整个过程。 1 准备工作 小编是通过PHPExcel实现数据导入的,所以在制作之前首先需要下载PHPExcel相关组件,目前tp5.1支持composer安装,小编就是通过composer安装的PHPE…

    2025年11月13日
    000
  • thinkphp5.1怎么关闭缓存

    thinkphp5.1关闭缓存的方法:1、找到“ThinkPHPCommonconvention.php”和“ThinkPHPCommondebug.php”文件;2、在debug.php中修改内容为“’TMPL_CACHE_ON’=>false,”;3、在conven…

    2025年11月12日
    000
  • 记录Nginx怎么配置TP5.1及所遇问题

    下面thinkphp框架教程栏目将给大家介绍关于nginx怎么配置thinkphp5.1以及遇到的问题的解决方法,希望对需要的朋友有所帮助! 1.Nginx用户对项目目录的访问权限cd /usr/local/nginx/html/setfacl -m u:nginx:rwx -R ../html2.…

    2025年11月6日 PHP框架
    000
  • 使用ThinkPHP创建TP5.1项目

    在前面,我们安装了thinkphp之后,那么如何用thinkphp开发项目呢? 1、 打开application/index/controller/Index.php,我们可以看到有如下代码。 <?phpnamespace appindexcontroller;class Index{ pub…

    2025年11月6日 PHP框架
    000
  • ThinkPHP5.1:数组对象查询的使用

    用过5.0的开发者都比较依赖5.0的数组查询方式,但是很无奈5.1的数组查询方式和5.0的区别很大,因此经常听到开发者抱怨5.1的数组查询不好用。 首先,出于安全和易用性的原因,官方是不推荐使用数组查询条件的,其次,你也许不知道5.1版本其实提供了一个新的数组对象查询的方式用以替代之前的数组条件。如…

    2025年11月3日 PHP框架
    000
  • ThinkPhp5.1制作微信支付以及支付后的几种状态说明

    很多时候,在项目开发的时候需要用到微信支付接口调用,例如:商城制作、在线缴费、保险缴费等等,小编最近做了几个水费收费系统、保函出具系统、在线报名系统,均用到了微信支付,以下把微信支付的制作以及支付后的几种状态说明列出,希望对大家有所帮助。 1 微信支付 【扫码支付】 public function …

    2025年11月3日
    000

发表回复

登录后才能评论
关注微信