PHP调用一个静态函数


PHP Calling a static function

给定以下代码,我正在寻找调用$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();

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

  • 它并不能清楚地表明你的意图(->表示你正在用一个对象做某事,,但你不是
  • 它最终可能会调用一些你意想不到的东西
  • 这可能会让读者感到困惑(读者可以肯定的是,作者不理解OO的基本原理)
  • 这只是错误的:静态函数属于类,而不是对象。通过类(包括self)而不是对象来调用它们

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