PHP调用静态函数

时间:2013-08-12 20:59:36

标签: php static function-call

鉴于以下代码,我正在寻找专业人士和调用$ this-> myStaticFunc(); vs self :: myStaticFunc();

class MyClass

  private function myPrivateFunc() {
    ...
    $this->myStaticFunc(); // or self::myStaticFunc();
    ...
  }

  // no need to tell me that i can't use $this in here
  public static function myStaticFunc() { ... }

}

// access static function
MyClass::myStaticFunc();

1 个答案:

答案 0 :(得分:3)

使用$this->myStaticFunction()的缺点是:

  • 它没有清楚地表明您的意图(->表示您正在对某个对象做某事,但您不是),
  • 最终可能会打电话给你没想到的东西,
  • 它可能会使读者感到困惑(所有读者都能确定作者不理解基本的OO原则),
  • 它只是错误:静态函数属于类,而不是对象。通过类(包括self)调用它们,而不是对象。

唯一可能的专业是你可能想要覆盖子类中的静态函数,但这表明该函数属于对象而不是类。在这种情况下,使用实例方法会更合适。