PHP-从对象实例调用静态函数有效吗?

PHP-从对象实例调用静态函数有效吗?,php,oop,static,Php,Oop,Static,为了更好地理解PHP中的静态方法和变量,我刚刚编写了一个示例类。我理解静态变量是如何工作的,但是静态函数没有按预期工作。如果你看到下面的代码 class Car{ static $wheels=4; static function getWheels(){ echo Car::$wheels=10; } } $car1 = new Car(); $car1->getWheels(); 我期待着 $car1->getWheels(); to t

为了更好地理解PHP中的静态方法和变量,我刚刚编写了一个示例类。我理解静态变量是如何工作的,但是静态函数没有按预期工作。如果你看到下面的代码

class Car{
    static $wheels=4;
    static function getWheels(){
        echo Car::$wheels=10;
    }
}
$car1 = new Car();
$car1->getWheels();
我期待着

$car1->getWheels(); to throw and error since getWheels is a static method.

为什么这不会抛出错误或警告?

我认为它来自PHP 4次,在PHP中没有
static
关键字,但您可以使用
->
操作符调用静态方法

事实上,从技术上讲,调用
$car1->getWheels()
在运行时被PHP翻译为
Car::getWheels()

随着PHP5的出现,该选项被用于向后兼容目的

但是,如果启用
E_STRICT
错误报告,现在应该会发出警告