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

标签 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.

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

最佳答案

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

事实上,从技术上讲,调用 $car1->getWheels() 过去(现在)都由 PHP 在运行时转换为 Car::getWheels()

随着 PHP5 的出现,保留此选项是出于向后兼容的目的

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

关于PHP - 从对象实例调用静态函数有效吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34564836/

相关文章:

javascript - invisible recaptcha v2 不检查必填字段

php - 将 get 参数添加到 Laravel 的重定向方法中

php - 奇怪的 undefined variable php 错误

php - Class::getInstance 的起源/解释?

php - 将 PHP 对象转换为 XML 的类

javascript - 如何通过对象传递回调的结果?

PHP:根据用户的时区显示时间

c# - 如何将函数扩展到 Random 类

c++ - 静态对象上的 shared_ptr 好吗?

java - 从 Class<A> 变量访问静态字段