升级至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
相关产品推荐
相关产品推荐

