this StackOverflow question에서 은 (PHP에서) static::
이 어디인지를 알게되었습니다. 한 클래스 내에서 많은 수의 상수를 정의 할 때 하위 클래스의 해당 상수를 재정 의하여 기본 "동작"을 변경하려면 static::
을 사용해야하므로 상수를 참조하는 부모 클래스의 메서드, 상수 "오버라이드". 내가, 내가 어디 static::
이없는 상수를 사용하는 클래스의 확장을 제한하기 위해 나타납니다 나는 거의 self::
이후 self::
을 사용하지 않는 점에 광범위하게 static::
을 사용하기 시작했다 원래의 질문을 이후 2 년 동안static :: versus self :: - 단점이 있습니까?
이 제한.
내가하지 않더라도 현재이 상수는 자식 클래스에서 재정의 될 예정, 나는 단지의 경우, static::
을 사용하게 - 그래서 나는 한 무리 할 필요가 없습니다 검색 및 바꾸기 나중에, 그것이 나온다면 나는 클래스를 확장하고 상수를 오버라이드하고 싶을 것이다.
그러나 다른 사람의 코드에서 I 은 드물다은 static::
을 참조하십시오. 2012 년까지 그 존재를 알지 못했습니다. 그렇다면 self::
대신에 static::
을 사용하는 것이 일반적으로 아닌 이유는 무엇입니까?
내 질문에, 다음과 같습니다있다 self::
에 반대 명백한 , 클래스 상수로 다스 려에 대한 static::
을 사용하여을 단점? 내가 여기에 총체적인 반 패턴을 사용한다고 유죄?
답해 주셔서 감사합니다! 왜 "정적 사용"이 좋은 아이디어가 아닌가? 설명 해주십시오. 또한 테스트 목적으로 정적 인 것이 바람직한 이유는 무엇입니까? –
이 주제에 대한 유용한 정보가 많이 있습니다. http://misko.hevery.com/2008/12/15/static-methods-are-death-to-testability/ – dynamic