Computer >> 컴퓨터 >  >> 프로그래밍 >> PHP

PHP에서 var_dump() 결과를 문자열로 캡처하는 방법 완벽 가이드

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()만큼 자세한 자료형 정보(문자열 길이 등)까지 표현하려면 위에서 소개한 출력 버퍼링 방식이 가장 확실합니다.