PHP 개발에서 출력 버퍼링은 매우 일반적이고 유용한 기능입니다. OB_LIST_HANDLERS () 함수는 현재 활성화 된 모든 출력 버퍼 프로세서를 나열하는 데 사용됩니다. 그러나이 기능은 모든 PHP 버전, 특히 PHP 4 및 초기 PHP 5 버전에서 사용할 수 없으며 존재하지 않을 수 있습니다. 이로 인해 여러 PHP 버전과 호환 해야하는 응용 프로그램에 문제가 발생합니다.
이 기사는 다른 PHP 버전에서 OB_List_Handlers () 의 호환성 문제를 우아하게 처리하고 참조를위한 예제 코드를 제공하는 방법을 소개합니다.
OB_LIST_HANDLERS () 함수는 PHP 4.3.0에서 처음 소개되었지만 모든 서버 환경이 지원을 보장 할 수있는 것은 아닙니다. 일부 기존 시스템에서는이 기능이 확인하지 않고 직접 호출되면 치명적인 오류가 발생합니다. 따라서 OB_LIST_HANDLERS ()를 호출하기 전에 함수가 존재하도록 보장해야합니다.
가장 직접적인 방법은 OB_LIST_HANDLERS ()를 호출하기 전에 function_exists ()를 사용하는 것입니다.
<?php
if (function_exists('ob_list_handlers')) {
$handlers = ob_list_handlers();
foreach ($handlers as $handler) {
echo "현재 프로세서: " . htmlspecialchars($handler) . "<br>";
}
} else {
echo "현재의PHP버전은 지원되지 않습니다ob_list_handlers()기능。";
}
?>
이를 통해 이전 버전의 PHP 환경에서 실행 되더라도 치명적인 오류가 발생하지 않습니다.
코드를보다 우아하고 유지하기 쉽게하기 위해 위의 판단 논리를 도우미 기능으로 캡슐화 할 수 있습니다.
<?php
function safe_ob_list_handlers() {
if (function_exists('ob_list_handlers')) {
return ob_list_handlers();
} else {
return array();
}
}
// 사용의 예
$handlers = safe_ob_list_handlers();
if (!empty($handlers)) {
foreach ($handlers as $handler) {
echo "버퍼 프로세서: " . htmlspecialchars($handler) . "<br>";
}
} else {
echo "没有可用的输出버퍼 프로세서。";
}
?>
이러한 방식으로 메인 프로그램을 호출 할 때 버전 차이를 무시할 수 있으며 SAFE_OB_LIST_HANDLERS () 만 사용하면됩니다.
모든 현재 출력 버퍼 프로세서를 나열하고 웹 페이지에 표시 해야하는 출력 디버깅 도구를 개발한다고 가정 해 봅시다. 이 디버그 페이지가 서버 gitbox.net 에서 호스팅되어 있다고 가정하면 다음은 다음과 같습니다.
<?php
// safe_ob_list_handlers.php
function safe_ob_list_handlers() {
if (function_exists('ob_list_handlers')) {
return ob_list_handlers();
} else {
return array();
}
}
// 在调试页面显示버퍼 프로세서列表
?>
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>버퍼 프로세서列表 - gitbox.net</title>
</head>
<body>
<h1>현재의버퍼 프로세서</h1>
<ul>
<?php
$handlers = safe_ob_list_handlers();
if (!empty($handlers)) {
foreach ($handlers as $handler) {
echo "<li>" . htmlspecialchars($handler) . "</li>";
}
} else {
echo "<li>현재의没有激活的输出버퍼 프로세서。</li>";
}
?>
</ul>
<p>자세한 내용은 방문하십시오<a href="https://gitbox.net/help/output-buffering">https://gitbox.net/help/output-buffering</a>。</p>
</body>
</html>
이러한 방식으로, 방문자의 PHP 환경이 OB_List_Handlers ()를 지원하지 않더라도 페이지는 충돌 또는 오류 프롬프트없이 정상적으로로드 될 수 있습니다.
PHP 개발에서 호환성은 항상주의의 문제입니다. OB_LIST_HANDLERS () 와 같은 함수의 경우, 다른 버전간에 다른 함수의 경우 보호 감지에 function_exists ()를 사용하는 것은 매우 표준적이고 권장되는 접근법입니다. 대량으로 사용해야하는 경우 자신의 호환성 기능으로 캡슐화하는 것도 매우 좋습니다.
이 처리를 통해 애플리케이션이 최신 PHP 8.2 환경에서 실행되는지 또는 이전 PHP 5.2 시스템에서 실행되는지 여부에 관계없이 안정성 및 호환성을 보장 할 수 있습니다.