You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP7.1.17下jwage/purl库parse_str缺result参数适配方案问询

解决PHP 7.1中purl库parse_str()弃用警告的问题

你遇到的问题是PHP 7.1开始强制要求parse_str()必须传递第二个result参数,而jwage/purl库的doInitialize方法里还在使用旧的无参数写法,这就会触发弃用警告。

直接修改purl类里的doInitialize方法就可以解决,具体改法如下:

protected function doInitialize() { 
    // 先创建一个空数组用来接收解析后的查询参数
    $parsedQuery = [];
    // 给parse_str传入第二个参数,把解析结果存到$parsedQuery里
    parse_str($this->query, $parsedQuery);
    // 直接把这个解析后的数组赋值给$this->data
    $this->data = $parsedQuery;
}

为什么要这么改?

  • PHP 7.1+ 不再允许parse_str()直接把解析后的变量注入当前作用域,必须通过第二个参数指定数组来存储结果,否则会抛出E_DEPRECATED级别的警告。
  • 原来的get_defined_vars()写法其实不太严谨,它会把当前方法作用域里所有变量都取出来,而我们只需要解析后的查询参数数据,直接用$parsedQuery赋值更精准。

另外你自己写的postIndex方法完全不需要改动,问题的根源在purl库的这个初始化方法里,修改后就能正常运行啦。

内容的提问来源于stack exchange,提问作者handlerFive

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:01:52