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

时间:2016-01-02 10:25:23

标签: php oop static

我刚刚编写了一个示例类,以便更好地理解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.

为什么这不会引发错误或警告?

1 个答案:

答案 0 :(得分:2)

我认为它来自PHP 4次,其中没有static个关键字,但您可以调用静态方法,无论是->还是::运算符

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

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

如果您启用E_STRICT错误报告,则应立即发出警告