2

次のコードを考えると、 $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();
4

1 に答える 1

3

使用の短所は次の$this->myStaticFunction()とおりです。

  • 意図を明確に示していません (->オブジェクトで何かを行っていることを示しますが、そうではありません)。
  • 思いがけないことを呼んでしまうかもしれませんが、
  • 読者を混乱させる可能性があります (読者が確実に判断できるのは、作成者が基本的なオブジェクト指向の原則を理解していないということだけです)。
  • そして、それは単純に間違っています。静的関数は、オブジェクトではなくクラスに属しています。selfオブジェクトではなく、クラス ( を含む) を介してそれらを呼び出します。

唯一可能な長所は、子クラスの静的関数をオーバーライドしたい場合があることですが、これは、関数がクラスではなくオブジェクトに属していることを示しています。その場合は、インスタンス メソッドを使用する方が適切です。

于 2013-08-12T21:03:02.780 に答える