PHP에서 var_dump()는 변수의 자료형과 값을 상세히 출력해주는 디버깅용 함수입니다. 하지만 이 함수는 기본적으로 화면에 직접 출력되기 때문에, 결과를 로그 파일에 저장하거나 다른 문자열 처리 작업에 활용하려면 불편함이 있습니다.
이럴 때 출력 버퍼링(Output Buffering)을 사용하면 var_dump()의 결과를 문자열로 손쉽게 캡처할 수 있습니다. 아래 예제를 통해 확인해 보겠습니다.
예제 코드
<?php
function varDumpToString($var) {
ob_start(); // 출력 버퍼링 시작
var_dump($var); // 버퍼에 결과가 저장됨
$result = ob_get_clean(); // 버퍼 내용을 가져오고 버퍼 종료
return $result;
}
// 사용 예시
$data = array('first', 'second', 'third');
$result = varDumpToString($data);
echo $result;
?>동작 원리
위 코드의 핵심은 PHP의 출력 제어 함수(Output Control Functions)입니다. 일반적으로 PHP 코드의 출력 결과는 브라우저로 바로 전송되지만, 출력 버퍼링을 활성화하면 출력 내용이 브라우저로 전달되기 전에 메모리상의 버퍼에 임시로 저장됩니다.
- ob_start() : 출력 버퍼링을 시작합니다. 이후의 모든 출력은 화면이 아닌 버퍼에 저장됩니다.
- ob_get_clean() : 버퍼에 저장된 내용을 반환한 후, 버퍼를 비우고 종료합니다.
이 두 함수를 조합하면 어떤 함수든 화면 출력 대신 문자열 변수에 결과를 담아 재활용할 수 있습니다.
실행 결과
위 코드를 실행하면 다음과 같은 출력을 얻을 수 있습니다.
array(3) { [0]=> string(5) "first" [1]=> string(6) "second" [2]=> string(5) "third" }참고: 더 간결한 방법
별도의 함수 없이 인라인으로 처리하고 싶다면 다음과 같이 한 줄로 작성할 수도 있습니다.
$result = substr(ob_get_clean(), 0); // 또는 ob_start(); var_dump($data); $result = ob_get_clean();
또한 PHP 4.3.0 이상에서는 var_export($var, true)처럼 두 번째 매개변수를 지원하는 함수들도 있으니, 디버깅 목적에 따라 적절한 방식을 선택하시면 됩니다. 단, var_dump()만큼 자세한 자료형 정보(문자열 길이 등)까지 표현하려면 위에서 소개한 출력 버퍼링 방식이 가장 확실합니다.