2010-08-02 6 views
3

uaa() 함수는 특별히 정의되지 않은 경우에도 정적 함수로 사용할 수 있습니다. "정적"키워드를 사용해야하는지 궁금합니다.PHP에서 "정적"키워드가 필요합니까?

<?php 

class foo 
{ 
    functon uaa() 
    { 
     // do something 
    } 
} 
+1

* (PHP Manual :'static' 키워드) (http://us2.php.net/manual/en/language.oop5.static.php) – Gordon

답변

10

잘 모르겠습니다. 그러나 당신은 그것이 E_STRICT 트리거 그렇게 할 경우 :

엄격한 기준 : 비 정적 메서드 을 :: 정적으로 C에서 를 호출 할 수 없습니다() non_static : \ file.php 라인 (12)

정적 인 것과 그렇지 않은 것을 명확히 밝히는 것이 좋습니다. 객체 컨텍스트가 아닌 $this에 액세스하려고 시도 할 가능성이 적습니다.

4

엄밀히 말하면 정적이 아닌 함수를 정적으로 호출 할 수 있습니다. 그래도 E_STRICT 오류가 발생합니다. 그리고 메서드에서 $this을 사용하면 더 큰 오류가 발생합니다 (나는 그것이 E_WARNING이지만 매우 중요 할 수 있음을 확신합니다).

static 키워드가 시행되었습니다. 인스턴스에서 정적 메서드를 호출하지 못하게하는 것입니다. 따라서 엄격하게 필요한 것은 아니지만 적절한 호출을 식별하고 부분적으로 시행하는 데는이를 사용하는 것이 좋습니다.

더하기, "미래 보장"코드가 있습니다. 제 말은 PHP의 이후 버전에서 비 정적 메소드를 정적으로 호출 할 수있을 때 "기능"을 제거 할 수 있다는 것입니다 (이는 현재 E_STRICT 오류입니다).

+0

$this을 사용하면 치명적인 오류가 발생합니다 . – Artefacto

+0

(5.3.2 이상에서) 아무 것도 지정하지 않은 경우에만 ... – ircmaxell