php - 在 PHP 中,使用 -> 解引用器调用静态类函数是否有问题

标签 php oop class static-methods dereference

我正在使用 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/

相关文章:

php - regexp php,我需要替换模板的所有单词

javascript - 在javascript中创建树状结构

oop - 什么是方法调度?

c++ - 如何转换指针以调用派生类函数/方法? C++

php - 为什么mysql HEX改变二进制列的大小写?

php - 使 CSS 中半消失的元素可见

php - 显示表中特定行的详细信息

javascript - 将原型(prototype)添加到现有对象

python - 为什么属性在 Python 中跨类继承?

c++ - 将模板类的对象传递给另一个类的构造函数