2015-01-20 1 views
0

이 PHP가 유효하다고 생각하지는 않았지만 (놀랍게도 PHP 5.5.9에서 테스트를 거쳤 음),그룹화 된 명령문을 단독으로 사용하는 것이 유효합니까?

<?php 

$arr = []; 

$arr[] = 'Hi.'; 

{ 
    $arr[] = '> Hi there.'; 
    $arr[] = '> What can I do for you?'; 
} 

$arr[] = 'Nothing really.'; 

print_r($arr); 

출력 ...

Array 
(
    [0] => Hi. 
    [1] => > Hi there. 
    [2] => > What can I do for you? 
    [3] => Nothing really. 
) 

PHP 매뉴얼은 introducing control structures 그룹 문으로 {...}을 의미한다 - 그러나, 나는이 문맥의 외부에서의 사용에 대한 언급을 찾을 수 없습니다. 그것은 "성명서 그룹도 그 자체로 성명서"라고 말하지만, 그것은 다소 모호한 것처럼 보입니다.

진정한 의미입니까? 이런 중괄호를 사용하면 이후 버전에서 코드를 실행할 수 있습니까? 명령문 그룹이 단독으로 명령문으로 간주되는 경우 예외 스택 추적에 행 번호 및 프레임에 영향을 줄 것으로 예상해야합니까?

+1

php-5.4 이상에서 작동하는 것으로 보입니다. http://3v4l.org/UKeY5 – Halcyon

+3

물론 유효합니다 ... JavaScript에서도 유효합니다. 아마 더 많은 언어. –

+0

5.2.5에서도 작동합니다! –

답변

3

진정한 의미입니까?

예 는 적어도 4.3

이 같은 괄호를 사용하는 경우부터, 내 코드는 향후 버전에서 실행 기대할 수 있을까?

언어에서 제거 될 때까지 예. 변경 사항을 적용하는 것은 거의 발생하지 않습니다.

명령문 그룹이 단독으로 명령문으로 간주되는 경우 예외 스택 추적에 행 번호 및 프레임에 영향을 주어야합니까?

프레임 그룹 문을 포함하지 않는 등 if, whilefor, 그래서 기대로 : 없음. 왜 그것을 시험해 보지 않으시겠습니까?

+0

실제로 이것은 PHP 5.2.5에서도 작동하므로 5.2.x를 모두 추측합니다. http://sandbox.onlinephpfunctions.com/code/1a429bebd14f5130716f9c6492259d8f0bdd26b5 –

+0

5.5.9에서 예외를 테스트했지만 추적에 이상한 영향을 미치는 것 같습니다. – Alex

+0

PHP 4.3.0부터 작동, 적어도 : http://3v4l.org/DmHrc –

관련 문제