升级到 PHP 8.1 后出现“非静态方法”错误

mk8*_*k81 -1 php php-8.1

从 PHP7.4 升级到 PHP8.1 后出现以下 PHP 错误

$result = CarsDAO::selectCarsByColor($idCar, self::CARS_PER_PAGE, 0);
Run Code Online (Sandbox Code Playgroud)

Non static method 'selectCarsByColor' should not be called statically

有什么想法如何重写它才可以吗?

Mar*_*ler 5

正如错误所述,该方法在 CarsDAO 类中不是静态的,因此您应该在实例上调用它。

$car    = new CarsDAO();
$result = $car->selectCarsByColor($idCar, self::CARS_PER_PAGE, 0);
Run Code Online (Sandbox Code Playgroud)

肮脏的单线

$result = (new CarsDAO)->selectCarsByColor($idCar, self::CARS_PER_PAGE, 0);
Run Code Online (Sandbox Code Playgroud)

或者通过在方法声明前面添加关键字使方法静态来修复类。阅读手册中有关静态的内容static

class CarsDAO {
    public static function selectCarsByColor($idCar, $carsPerPage, $zeroThing) {
    // code here
    }
}
Run Code Online (Sandbox Code Playgroud)