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

PHP致命错误:Cannot use $this as parameter 问题求助

PHP致命错误:Cannot use $this as parameter 问题求助

嗨,这个问题其实很好解决,错误提示已经把原因说得明明白白啦:$this是PHP的保留关键字,绝对不能拿来当作函数的参数名称使用~

你看你代码里的before、between、after三个函数,都把$this作为了参数之一,这在PHP里是严格禁止的——因为$this是语言专门预留用来指代当前对象实例的变量,属于系统级别的保留字,自定义代码不能占用它。

至于为什么本地可能没报错,上传到Hostinger就出问题?大概率是本地的PHP版本比较旧,对这个语法限制没那么严格,而Hostinger用的PHP版本更规范(或者开启了严格模式),直接触发了致命错误。

具体解决步骤:

  • 替换参数名:把所有函数参数里的$this换成其他合法的、语义化的变量名,比如$searchVal、$startStr这类,避免和保留字冲突
  • 同步修改内部引用:函数内部用到这些参数的地方,也要跟着改成新的变量名
  • 修正潜在逻辑bug:顺便提一句,你after函数里的判断!is_bool(strpos($inthat, $this))写法有问题,strpos返回的是匹配位置的整数(可能为0)或者false,正确的判断应该是strpos(...) !== false,否则当匹配内容在字符串开头时会出错

修改后的完整代码示例:

function before ($searchVal, $inthat)
{
    return substr($inthat, 0, strpos($inthat, $searchVal));
}
function between($startStr, $endStr, $inthat)
{
    return before($endStr, after($startStr, $inthat));
}
function after ($searchVal, $inthat)
{
    $matchPos = strpos($inthat, $searchVal);
    if ($matchPos !== false) {
        return substr($inthat, $matchPos + strlen($searchVal));
    }
    return ''; // 增加默认返回,避免无匹配时出现警告
}

把修改后的代码替换掉原文件里的对应部分,重新上传到Hostinger,这个致命错误应该就消失啦~

备注:内容来源于stack exchange,提问作者pharma inquiry

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.15 10:08:00