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