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

升级至PHP 8.1后出现Non static method错误,如何修复?

解决PHP8.1中非静态方法被静态调用的错误

方案一:将目标方法声明为静态方法

PHP8.1对非静态方法的静态调用限制更为严格,直接触发错误(PHP7.4中仅为警告)。如果selectCarsByColor方法不需要依赖类的实例属性,可以直接修改CarsDAO类,给方法加上static关键字:

class CarsDAO {
    // 类内其他代码
    public static function selectCarsByColor($idCar, $perPage, $offset) {
        // 原方法的业务逻辑代码
    }
    // 类内其他代码
}

修改后,原调用代码$result = CarsDAO::selectCarsByColor($idCar, self::CARS_PER_PAGE, 0);可正常执行。

方案二:实例化类后调用方法

如果selectCarsByColor方法依赖类的实例属性(比如数据库连接实例),不适合改为静态方法,就先创建CarsDAO的实例,再通过实例调用方法:

$carsDAOInstance = new CarsDAO();
$result = $carsDAOInstance->selectCarsByColor($idCar, self::CARS_PER_PAGE, 0);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 01:27:15