Programming

일부 스크립트에서 닫는 PHP 태그 '?>'를 생략하는 이유는 무엇입니까?

procodes 2020. 5. 13. 20:54
반응형

일부 스크립트에서 닫는 PHP 태그 '?>'를 생략하는 이유는 무엇입니까? [복제]


이 질문에는 이미 답변이 있습니다.

일부 스크립트에서는 스크립트에 대한 닫기 태그 작성을 생략 ?>합니다. 왜 그렇습니까?

(그들이 그것을 잊어 버리지 않았다고 확신합니다.)


닫기 태그를 생략하는 것은 파일 끝에서 공백과 다른 문자를 피하기위한 하나의 솔루션 일뿐입니다. 예를 들어, 닫는 태그 뒤에 실수로 추가 된 문자는 나중에 헤더 정보를 수정하려고 할 때 오류가 발생합니다.

닫는 태그를 제거하는 것은 많은 코딩 지침을 참조하는 일종의 "좋은 방법"입니다.


에서 PHP : 명령 분리

파일의 끝에서 PHP 블록의 닫기 태그는 선택 사항이며, 어떤 경우에 사용할 때 도움이됩니다 생략 include()또는 require()원치 않는 공백이 파일의 끝에서 발생하지 않도록, 당신은 여전히에 헤더를 추가 할 수 있습니다 나중에 응답. 출력 버퍼링을 사용하는 경우에도 편리하며 포함 된 파일에 의해 생성 된 부분 끝에 불필요한 공백이 추가되는 것을 원하지 않습니다.


PHP 태그의 php.net :

파일이 순수 PHP 코드 인 경우 파일 끝에 PHP 닫기 태그를 생략하는 것이 좋습니다. 이렇게하면 PHP 닫는 태그 뒤에 실수로 공백이나 줄 바꿈이 추가되는 것을 방지 할 수 있습니다. 이는 프로그래머가 스크립트의 해당 지점에서 출력을 보내려는 의도가 없으면 PHP가 출력 버퍼링을 시작하기 때문에 원하지 않는 결과를 초래할 수 있습니다.


닫는 태그 다음에 공백이 없어서 헤더가 작동하지 않을 수 있습니다.

물론 이것은 PHP 전용 파일의 경우에도 마찬가지입니다.


CodeIgniter Framework 는에 대한 닫기 태그를 생략 할 것을 제안합니다.

"... 원치 않는 출력, PHP 오류 또는 빈 페이지가 발생할 수 있습니다."

여기에서 읽을 수 있습니다 .


최신 버전의 PHP는에 output_buffering플래그를 설정합니다 php.ini. 출력 버퍼링이 활성화 된 경우 반환 된 코드가 브라우저로 즉시 전송되지 않으므로 HTML 출력 후 HTTP 헤더 및 쿠키를 설정할 수 있습니다.

이 상황에서 예제가 여전히 유효합니까?


  1. 불필요한 공백 / 빈 페이지가 표시됩니다. 원하지 않는 공백에는 HTTP 헤더가 작동하지 않습니다.
  2. 대부분의 JavaScript 주입은 파일 끝에서 이루어집니다. 오류 메시지를 표시하고 코드를 중단합니다. 삽입 된 JavaScript 코드는 실행되지 않습니다.

참고 URL : https://stackoverflow.com/questions/3219383/why-do-some-scripts-omit-the-closing-php-tag

반응형