PHP静态函数

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (65)

我有一个关于在PHP静态函数的问题。

让我们假设我有一个类

class test {
    public function sayHi() {
        echo 'hi';
    }
}

如果我这样做test::sayHi();,没有问题。

class test {
    public static function sayHi() {
        echo 'hi';
    }
}

test::sayHi(); 也适用。

第一个类和第二个类有什么区别?

静态函数有什么特别之处?

提问于
用户回答回答于

在第一个类中,sayHi()实际上是一个实例方法,你正在调用一个静态方法,并且因为sayHi()从来没有引用而离开它$this

静态函数与类关联,而不是类的实例。因此,$this从静态上下文中不可用($this不指向任何对象)。

用户回答回答于

完全不同的是,你不会在静态函数里面提供$this。如果你尝试使用$this,你会得到一个Fatal error: Using $this when not in object context

好吧,还有一个区别:你的第一个例子会产生一个警告E_STRICT

扫码关注云+社区

领取腾讯云代金券