【问题标题】:PHP - Calling a static function from an object instance works?PHP - 从对象实例调用静态函数有效吗?
【发布时间】:2016-01-02 10:25:22
【问题描述】:

我刚刚写了一个示例类来更好地理解 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 oop static


    【解决方案1】:

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

    事实上,从技术上讲,调用$car1->getWheels() 已经(并且现在)在运行时被PHP 翻译成Car::getWheels()

    随着 PHP5 的出现,这个选项被保留是为了向后兼容

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-08
      • 2016-09-08
      • 2010-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多