2013-08-12 8 views
2

다음 코드를 사용하면 $ this-> myStaticFunc();를 호출 할 때 pro와 con를 찾고 있습니다. vs self :: myStaticFunc(); $this->myStaticFunction()를 사용PHP 정적 함수 호출

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(); 
+0

제로 정보를 제공하고 검정색 또는 파란색 차를 구입해야하는지 알고 싶습니다 ... – hek2mgl

+2

그들은 완전히 다른 목적으로 사용됩니다. ... 함수가 인스턴스에 대해 작동해야하는 경우이를 인스턴스 함수; 그렇지 않다면 정적 함수를 사용할 수 있습니다. –

답변

3

단점은 다음과 같습니다

  • 그것은 명확하게 의도가 무엇인지 표시하지 않습니다 (->, 당신은 객체와 함께 일을하고있다 표시하지만을하지 않습니다),
  • 기대하지 않았던 것을 불러 일으킬 수 있습니다.
  • 독자가 혼란을 겪을 수 있습니다 (모든 독자는 저자가 기본 OO p를 이해하지 못한다는 것을 확실히 결정할 수 있습니다.) riciples)
  • 단순히 입니다. : 정적 함수는 객체가 아닌 클래스에 속합니다. 객체가 아닌 클래스 (self 포함)를 통해 호출하십시오.

가능한 유일한 프로는 자식 클래스의 정적 함수를 재정의 할 수 있다는 것입니다, 그러나 이것은 함수가 객체 아닌 클래스에 속한다는 것을 나타냅니다. 이 경우 인스턴스 메소드를 사용하는 것이 더 적절할 것입니다.