2011-01-06 4 views
3

PHP 5.3으로 업데이트하는 것을 거부 했으므로 (이는 성가 시지만 동시에 훌륭함, 유연함), 실제로 저를 깜박하는 유일한 방법은 __callStatic을 사용할 수 없습니다.PHP : 5.2.x 용 __callStatic 대체물

하나의 클래스로 통합하려는 모듈이로드되어 있습니다 (예 : 모듈을로드하는 클래스가 있고 주 모듈의 클래스를 호출하여 __callStatic 메서드를 호출 할 때). 그러나 로컬 테스트 서버에서 내 서버로 업로드 한 경우 분명히 __callStatic 메서드가 작동하지 않습니다.

여전히 대체 정적이 있습니까? $registry->some_func() 대신 이중 콜론 (예 : registry::some_func())의 깨끗한 코드 모양을 좋아합니다.

이 또 다른 아래 쪽은 지금 (내 자신의 취향에 의해 매우이며, 매우 지저분한) 함수 내에서 global 키워드를 사용하도록 강요하고있어 것입니다.

코드는 비 정적 메서드 대신 정적 메서드를 사용하여 매우 빠르며 차례 차례로 훨씬 더 깨끗합니다.

또한 : 나는 심지어 그들이 5.3로 업그레이드 할 때 마이그레이션을 쉽게되고, 그런 식 5.2와 함께 평소와 같이 __callStatic 방법을 기록한 다음, 예를 registry::__callStatic("some_func"), array("val", "val2", "val3")를 들어, 명시 적으로 메소드를 호출하고 가지 간단한 유지에 대해 생각했습니다 . 이 방법에 대한 생각?

감사합니다.

답변

1

이 작업을 수행하는 유일한 이유는 속도와 주관적인 호감이 이중 콜론의 경우라면 대시 및 대괄호의 타오를 인식하고 급락하여 개체 인스턴스를 사용하도록 성장할 것입니다. 당신이 말하는 "깨끗한 코드보기"는 망치 바지와 같습니다. 1 년은 멋지지만, 몇 년 후에는 나이가 들고 현명 할 때 그리 멋지지 않습니다. __callStatic() (IMVHO)은 불필요한 사소한 편리함과 최악의 경우 열악한 수업 설계의 해결 방법입니다. :)

+0

매우 현명하게 말했습니다.] 나는이 시점에서 내 자신의 스펙이라고 생각합니다. 난 항상 약간의 마술 리눅스 명령을 사용하여 코드의 전체를 정적 호출로 대체 할 수있다. (단지'$'를 제거하고'-'를'::'로 대체하면된다.) 고마워! – Qix