안녕하세요. 명월입니다.
이 글은 PHP에서의 변수 확인 함수 var_dump, debug_zval_dump, print_r에 대한 글입니다.
프로그램을 개발하면 데이터의 흐름을 알아야 할 때가 있습니다. 그 흐름 포인트를 잡아서 확인하는 작업을 디버깅이라고 합니다.
간단한 웹 페이지를 작성한다면 디버깅이 필요 없이 값의 흐름이 보일 수 있겠지만, 데이터베이스에서 검색을 해서 그 데이터를 여러 가지 형태로 변환한 다음 출력을 한다면 중간에 데이터가 잘 들어오는지, 혹은 예상과 다른 값이 나온다면 중간에서 어떤 부분이 잘못되어있는지 데이터를 확인할 필요가 있습니다.
Java나 C#의 경우는 좋은 개발툴(IDE)가 있어서 BreakPoint로 그 데이터의 추적이 가능합니다만, PHP의 경우는 매끄럽게 디버깅이 되는 좋은 IDE가 없는 것 같습니다.
방금 구글링을 하다보니 최근에는 PHP IDE로 ZendStudio가 있습네요. 아직 사용해 본 적이 없어서 어떤지 잘 모르겠네요.
링크 - https://www.zend.com/en/downloads
지금은 현재는 php IDE툴로서는 좀 손에 익는 eclipse를 사용합니다만, 이게 PHP는 디버깅이 안됩니다.
정확히는 안되는 건 아닙니다만 xdebug를 사용해서 할 수 있습니다만, 저는 에러를 계속 발생시키네요.
참조 링크 - https://xdebug.org/
참조 링크 - https://wiki.eclipse.org/Debugging_using_XDebug
참조 링크 - https://yard.tistory.com/entry/Eclipse-PHP-Debug-
하루 종일 헤매면서 되게 해볼려고 했으나 결국 실패했습니다.
stack-overflow 보니 이클립스 자체에 버그가 있는 것 같네요.. 나중에 ZendStudio으로 도전해 봐야겠습니다.
그렇다고 제가 여태 딱히 PHP를 디버깅해가면서 개발하지는 않았습니다. 한 10년 전 이클립스도 잘 사용하지 않았을 때는 그냥 notepad++로 작성했었습니다.
PHP에는 값을 확인하는 함수가 있는데 그것이 바로 var_dump 함수입니다.
<?php
$title = "title";
$data = 1;
for($i=0;$i<100;$i++){
$data++;
}
// $data 값을 확인합시다.
var_dump($data);
?>
<!DOCTYPE html>
<html>
<head>
<title>
<?=$title?>
</title>
</head>
<body>
<?=$data?>
</body>
</html>
일단 글씨가 굉장히 작게 나옵니다만 index.php 파일의 8째줄, int형의 값 101이라고 나오네요. var_dump로 보니 데이터 타입도 나옵니다.
보통은 var_dump를 자주 사용하는데 그와 비슷한 함수가 debug_zval_dump, print_r 가 있습니다.
<?php
$title = "title";
$data = 1;
for($i=0;$i<100;$i++){
$data++;
}
$data2 = array("Hello", "world", "Good");
$data3["First"] = "Test";
$data3["Second"] = "Hello";
$data3["Third"] = "World";
?>
<!DOCTYPE html>
<html>
<head>
<title>
<?=$title?>
</title>
</head>
<body>
<?php
var_dump($data);
echo "<br>";
var_dump($data2);
echo "<br>";
var_dump($data3);
echo "<br>";
echo "<br>";
echo "<br>";
debug_zval_dump($data);
echo "<br>";
debug_zval_dump($data2);
echo "<br>";
debug_zval_dump($data3);
echo "<br>";
echo "<br>";
echo "<br>";
print_r($data);
echo "<br>";
print_r($data2);
echo "<br>";
print_r($data3);
?>
</body>
</html>
좀 보기 편한 형태는 역시 var_dump이네요. 그러나 debug_zval_dump, print_r의 경우도 간단히 값을 볼 상황이라면 이렇게 사용해도 나쁘지는 않을 것 같습니다.
(※7.X부터는 var_dump 형식이 바뀌었나 보네요.. 예전에는 debug_zval_dump와 형식이 비슷했던 걸로 기억하는데...)
링크 - https://www.php.net/manual/en/function.var-dump.php
링크 - https://www.php.net/manual/en/function.debug-zval-dump.php
링크 - https://www.php.net/manual/en/function.print-r.php
여기까지 PHP에서의 변수 확인 함수 var_dump, debug_zval_dump, print_r에 대한 설명이었습니다.
궁금한 점이나 잘못된 점이 있으면 댓글 부탁드립니다.
'Study > PHP' 카테고리의 다른 글
[PHP] IO 사용법 (0) | 2019.09.19 |
---|---|
[PHP] require과 include 그리고 「@」사용법 (0) | 2019.09.18 |
[PHP] Fatal 및 Notice, Warnig 에러 메시지 처리하는 방법 (0) | 2019.09.17 |
[PHP] $_SERVER, $GLOBALS, $_GET, $_POST, $_REQUEST, $_COOKIE, $_SESSION, $_FILES, $_ENV(getenv()) (0) | 2019.09.13 |
[PHP] 예외처리(try ~ catch ~ finally) (0) | 2019.09.11 |
[PHP] 배열과 List (0) | 2019.09.10 |
[PHP] 인터페이스와 추상 클래스, 클래스 상속, parent, this (0) | 2019.09.09 |
[PHP] function과 class 사용법, 접근제한자 그리고 static (0) | 2019.09.06 |