PHP-从对象实例调用静态函数有效吗?
为了更好地理解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
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
错误报告,现在应该会发出警告