【问题标题】:PHP: calling non-static methods with scope resolution operator [duplicate]PHP:使用范围解析运算符调用非静态方法
【发布时间】:2011-10-24 04:39:47
【问题描述】:

可能的重复:
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();

【问题讨论】:

标签: php scope-resolution


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2016-07-23
    • 2015-09-14
    • 2013-06-13
    • 2020-12-12
    • 1970-01-01
    • 2016-04-09
    • 2012-04-20
    • 1970-01-01
    • 2018-05-14
    相关资源
    最近更新 更多