Forum und email

해석기(Parser) 동작

해석과 실행은 현재 두 단계로 완전히 따로 분리되어있다. 파일 코드의 실행은 그 파일전체와 그 파일이 필요로 하는 모든 것들이 성공적으로 해석되고나서야 비로소 이루어진다.

이런 분리를 위해 새로이 필요하게 된것 중 하나는 require와 include된 파일이 문법적으로 완벽해야 한다는 것이다. 이제 더이상 여러 파일간에 제어 구조의 서로 다른 제어 부분을 나눌수 없다. 어떤 파일 안에서 forwhile루프, if 구문이나 switch 블록으로 시작하거나 또 다른 파일 안에서 else, endif, casebreak구문을 갖을수 없다.

루프나 다른 제어 구조안에서 추가코드를 include하는 것은 아직은 완전히 유효하다. 단, 제어 핵심어와 닫힌 중괄호 {...} 는 동일한 통합 유닛(파일이나 eval()이 적용된 문자열)안에 있어야 한다.

이와 같은 분리된 코드는 어쨋든 매우 나쁜 스타일이긴 하지만 크게 해를 끼치지는 않을것이다.

더이상 유효하지 않은 또다른 특징은 PHP 3 코드에서는 거의 보이지는 않지만 require된 파일로부터 리턴받는 값이다. include된 파일로부터 값을 리턴받는것은 아직까지는 유효하다.