Header_Register_Callback 은 PHP에서 거의 언급되지 않은 기능입니다. PHP가 HTTP 응답 헤더를 출력하기 전에 HTTP 응답 헤더를 수정하거나 추가하기 위해 콜백 함수를 등록 할 수 있습니다. 즉,이 기능을 사용하여 응답 상태 코드 설정, 사용자 정의 헤더 정보 추가 등을 포함하여 PHP 출력 헤더 정보를 출력하기 전에 사용자 정의 작업을 수행 할 수 있습니다.
기능 프로토 타입 :
<span><span><span class="hljs-title function_ invoke__">header_register_callback</span></span><span>(</span><span><span class="hljs-keyword">callable</span></span><span> </span><span><span class="hljs-variable">$callback</span></span><span>)
</span></span>
$ 콜백 : 응답 헤더가 전송되기 전에 실행할 호출 가능 함수. 이 콜백 함수는 현재 응답에 대한 모든 HTTP 헤더 정보를 포함하는 배열 매개 변수를 수신합니다.
이런 식으로, 응답 헤더의 내용을 유연성으로 제어하여 응답을 보내기 전에 조정할 수 있습니다.
http_response_code는 HTTP 응답 상태 코드를 얻거나 설정하는 데 사용되는 PHP의 함수입니다. 기본적으로 PHP가 요청을 처리 할 때 상태 코드를 자동으로 200으로 설정합니다 (요청이 성공했음을 나타냅니다). 그러나 다른 상태 코드를 반환하려면 http_response_code 함수를 사용하여 수정할 수 있습니다.
기능 프로토 타입 :
<span><span><span class="hljs-title function_ invoke__">http_response_code</span></span><span>(</span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$code</span></span><span> = </span><span><span class="hljs-literal">NULL</span></span><span>)
</span></span>
$ 코드 : 설정할 HTTP 상태 코드. 이 매개 변수가 생략되면 현재 상태 코드가 반환됩니다.
일반적인 HTTP 상태 코드에는 다음이 포함됩니다.
200 : OK (성공 요청)
404 : 찾을 수 없음 (찾을 수 없음)
500 : 내부 서버 오류 (내부 서버 오류)
403 : 금지 (액세스는 금지되어 있음)
header_register_callback 과 http_response_code 함수를 결합하여 사용자 정의 HTTP 상태 코드를 매우 편리하게 설정할 수 있습니다. 다음은 다양한 조건에 따라 HTTP 상태 코드를 동적으로 설정하는 방법을 보여주는 간단한 예입니다.
샘플 코드 :
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 콜백 함수를 등록하여 수정하십시오 HTTP 응답 헤더</span></span><span>
</span><span><span class="hljs-title function_ invoke__">header_register_callback</span></span><span>(function() {
</span><span><span class="hljs-comment">// 조건에 따라 특정 조건을 확인하고 다른 조건을 설정하십시오. HTTP 상태 코드</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$_SERVER</span></span><span>[</span><span><span class="hljs-string">'REQUEST_METHOD'</span></span><span>] === </span><span><span class="hljs-string">'POST'</span></span><span>) {
</span><span><span class="hljs-title function_ invoke__">http_response_code</span></span><span>(</span><span><span class="hljs-number">201</span></span><span>); </span><span><span class="hljs-comment">// 성공적으로 만들어졌습니다,반품 201 상태 코드</span></span><span>
} </span><span><span class="hljs-keyword">elseif</span></span><span> (</span><span><span class="hljs-variable">$_SERVER</span></span><span>[</span><span><span class="hljs-string">'REQUEST_METHOD'</span></span><span>] === </span><span><span class="hljs-string">'DELETE'</span></span><span>) {
</span><span><span class="hljs-title function_ invoke__">http_response_code</span></span><span>(</span><span><span class="hljs-number">204</span></span><span>); </span><span><span class="hljs-comment">// 성공적으로 삭제하십시오,无内容반품,반품 204 상태 코드</span></span><span>
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-title function_ invoke__">http_response_code</span></span><span>(</span><span><span class="hljs-number">200</span></span><span>); </span><span><span class="hljs-comment">// 默认반품 200 상태 코드</span></span><span>
}
});
</span><span><span class="hljs-comment">// 출력 응답 내용</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"반응 형 컨텐츠..."</span></span><span>;
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
위의 코드에서는 먼저 PHP가 HTTP 응답 헤더를 보내기 전에 상태 코드를 설정하기 위해 콜백 함수를 등록합니다. 요청 방법에 따라 다른 HTTP 상태 코드를 동적으로 반환합니다.
사후 요청의 경우 201 생성 상태 코드가 반환되어 리소스가 성공적으로 생성되었음을 나타냅니다.
삭제 요청의 경우 204 컨텐츠 상태 코드가 반환되지 않으므로 삭제가 성공했지만 콘텐츠는 반환되지 않습니다.
다른 요청의 경우 기본 200 확인 상태 코드가 반환됩니다.
header_register_callback을 사용할 때 특별한주의가 필요한 몇 가지 사항이 있습니다.
통화 주문 : Header_Register_Callback 등록 된 콜백 함수는 모든 헤더 정보가 전송되기 전에 실행되므로 응답이 전송되기 전에 헤더 정보 (상태 코드 포함)가 완료되도록합니다.
응답 헤더 보내기 : http_response_code 함수를 호출 할 때 출력 내용 (예 : HTML 또는 텍스트)이 전송되기 전에 상태 코드가 설정되어 있는지 확인해야합니다. 그렇지 않으면 출력 콘텐츠 전에 응답 헤더를 전송해야하므로 PHP는 경고를합니다.
호환성 문제 : Header_Register_Callback은 특정 PHP 버전 또는 구성에서는 지원되지 않을 수있는 덜 사용되는 기능입니다. 따라서 생산 환경에서 사용될 때는 먼저 호환성 테스트를 수행하는 것이 가장 좋습니다.
PHP 개발자는 header_register_callback 과 http_response_callback 을 결합하여 다양한 비즈니스 로직 요구 사항에 따라 사용자 정의 HTTP 상태 코드를 쉽게 반환 할 수 있습니다. 이를 통해 인터페이스의 유연성을 향상시키는 데 도움이 될뿐만 아니라 프론트 엔드 또는 클라이언트가 서로 다른 상태 코드에 따라 처리 할 수있어 시스템의 유지 관리 및 사용자 경험이 더욱 향상됩니다.
이 기사를 통해이 두 기능을 더 잘 이해하고 사용하여 실제 개발에서 HTTP 응답 헤더 및 상태 코드를보다 효율적으로 제어 할 수 있기를 바랍니다.