我正在使用 PHP 5.2
我有以下代码:
class MyClass {
public function __construct() {}
public static function stuff() {
echo 'This is static! <br />';
}
}
$myClass = new MyClass();
MyClass::stuff(); // Reference by class.
$myClass->stuff(); // Reference by instance of class.
输出在这两种情况下都有效,这里是输出:
这是静态的!
这是静态的!
使用第二种引用方式与第一种引用方式是否存在问题?
因为我不允许使用与上面的静态函数具有相同签名的非静态函数,所以这不会成为问题。我希望该函数是静态的,因为使用静态函数时速度也会提高。
关于 -> 取消引用语法如何不表明这是一个静态函数的语义,我是否遗漏了任何东西或者这里是唯一的问题?
最佳答案
docs明确地说没关系:
A property declared as static can not be accessed with an instantiated class object (though a static method can).
不过,使用::
会更清晰。我还质疑静态方法明显更快的想法,尤其是在没有使用实例字段的情况下。在开始更改应用程序的语义以提高性能之前,您应该进行分析。
关于php - 在 PHP 中,使用 -> 解引用器调用静态类函数是否有问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4271074/