0

可能的重复:
用“::”调用非静态方法
PHP 中的静态方法与非静态方法有什么区别吗?

考虑到我们不尝试使用 $this 访问对象上下文中的任何内容,允许使用 :: 调用非静态方法的原因是什么?它是向后兼容的东西,还是出于某种特殊原因?我应该习惯避免使用 :: 来访问非静态方法吗?

class Foo{    
public function Bar(){
    echo "this works just fine"; 
    }
}

Foo::Bar();
4

1 回答 1

-1

有人可能会这样做有几个原因。

  • 一个是函数可能存在于一个类中,并且可能不依赖于被实例化的类来产生结果,并且您可能无法实例化该类,或者它是一个繁重的实例化,因此您只需调用该函数。
  • 需要加载一个单例。
  • 它对工厂模式类很有帮助
  • 也许有人只是想将相关功能组合在一起,而不是仅仅为所有功能使用命名约定
  • 如果需要,可以访问抽象类中的方法
  • 我敢肯定还有更多

http://www.ibm.com/developerworks/library/os-php-designptrns/

于 2011-08-10T15:23:34.330 回答