2

鉴于以下代码,我正在寻找调用 $this->myStaticFunc(); 的优点和缺点;与自我::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();
4

1 回答 1

3

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

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

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

于 2013-08-12T21:03:02.780 回答