PHP:使用范围解析运算符调用非静态方法

时间:2011-08-10 15:08:03

标签: php scope-resolution

  

可能重复:
  Calling non static method with "::"
  Does static method in PHP have any difference with non-static method?

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

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

Foo::Bar();

1 个答案:

答案 0 :(得分:-1)

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

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

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