6

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

输出在这两种情况下都有效,这是输出:

这是静态的!

这是静态的!

使用第二种引用方式与第一种引用方式有问题吗?

由于我不允许使用与上述静态函数具有相同签名的非静态函数,因此这不是问题。我希望函数是静态的,因为使用静态函数时也有速度提升。

我是否遗漏了什么,或者这里唯一的问题是关于 -> 取消引用语法如何不表明这是一个静态函数的语义?

4

1 回答 1

6

文档明确说没关系:

声明为静态的属性不能用实例化的类对象访问(尽管静态方法可以)。

但是,使用::. 我也质疑静态方法明显更快的想法,尤其是在没有使用实例字段的情况下。您应该在开始更改应用程序的语义以提高性能之前进行分析。

于 2010-11-24T20:19:24.820 回答