2013-12-24 2 views
0

isset을 사용하는 것은 추가 함수 호출이지만 그럼에도 불구하고 권장되는 방법입니다. 오류가 발생하면 @ $ _ REQUEST [ 'x'] 또는 isset ($ _ REQUEST [ 'x']) 다음 예에서 무엇이 더 빠릅니까?어느 쪽이 더 빠를까요?

나는 첫 번째가 빠를 것이라고 느낍니다. 그렇지 않으면 누군가가 왜 두 번째 것이 더 빠를 것인지에 관해 밝힐 수 있습니까?

if (@$_REQUEST['x']=='1'): 
    define ('X','1'); 
else: 
    define ('X','0'); 
endif; 

//or 

if (isset($_REQUEST['x'])): 
    if ($_REQUEST['x']=='1'): 
     define ('X','1'); 
    else: 
     define ('X','0'); 
    endif; 
else: 
    define ('X','0'); 
endif; 
+8

오류를 억제하는 것은 좋지 않습니다. 그것이 더 빠를지라도 그것을하지 마십시오. – Mike

+0

감사합니다. 마이크. 추천 된 방법은 옵션 2를 사용하는 것입니다. 그리고 나는 지적했습니다. 질문은 PHP가 작동하는 방식과 관련이 있습니다. 더 빨라지는 두 번째 (그리고 더 나은) 방법이 될 수 있습니까? 그 질문은 모두 그것에 관한 것입니다. –

+1

더 빨라질 수 있습니다. PHP는 매 반복마다 경고 또는 경고를 던지거나 오류를 표시하지 않기 때문에. – Mike

답변

1

모범 사례는 억제 연산자를 피하도록 규정하므로 isset()을 사용하십시오. 차이점을 고려하기 위해 마이크로 최적화에 충분히 관심이 있다면 PHP가 표시되지 않더라도 억제 된 오류를 처리한다는 것을 알아야합니다. 이론적으로 @로 얻은 최적화는 오류 처리로 인해 손실 될 수 있습니다.

모범 사례는 외부 소스에서 입력을받는 데있어 특수성을 나타냅니다. 대안으로 $ _POST 또는 $ _GET을 선택하는 것도 좋습니다.

+1

'표시되지 않은 PHP는 여전히 억제 된 오류를 처리합니다. 이론적으로 @가 얻은 최적화는 오류 처리로 인해 손실 될 수 있습니다 .' 그러면 올바른 대답을 얻을 수 있습니다. –

관련 문제