PHP - Heredoc & Nowdoc: 초보자를 위한 친절한 가이드
안녕하세요, PHP 학습자 여러분! 오늘 우리는 PHP의 두 가지 유용한 기능에 대해 알아보겠습니다. 문자열을 다루는 데 큰 도움이 되는 Heredoc과 Nowdoc입니다. 이 단어들이 외계어似的하다면 걱정 마세요 - 이 튜토리얼이 끝나면 당신은 이를 마스터하게 될 것입니다!
Heredoc과 Nowdoc는 무엇인가요?
자세한 내용으로 들어가기 전에, Heredoc과 Nowdoc을 간단히 설명해보겠습니다. 친구에게 긴 편지를 쓰고 있다고 가정해봅시다. 각 줄마다 따옴표를 사용하는 대신 자유롭게 쓸 수 있다면 좋지 않을까요? PHP에서 Heredoc과 Nowdoc이 바로 그런 일을 허용해줍니다 - 따옴표를 신경 쓰지 않고 여러 줄 문자열을 작성할 수 있습니다.
PHP에서 Heredoc 문자열
Heredoc이란?
Heredoc은 PHP에서 따옴표 없이 여러 줄의 텍스트를 작성할 수 있게 해주는 방법입니다. 이는 HTML 스니펫이나 긴 메시지를 코드에 포함할 때 특히 유용합니다.
Heredoc 사용법
Heredoc을 사용하려면 <<<
뒤에 식별자(예: EOD)를 작성한 다음 텍스트를 작성하고, 마지막에 같은 식별자로 닫습니다. 간단한 예제를 보겠습니다:
<?php
$name = "Alice";
$message = <<<EOD
Hello, $name!
Welcome to the wonderful world of PHP.
This is a Heredoc string.
EOD;
echo $message;
?>
이 코드를 실행하면 다음과 같은 출력이 나타납니다:
Hello, Alice!
Welcome to the wonderful world of PHP.
This is a Heredoc string.
이를 해부해보면:
- Heredoc 문자열을
<<<EOD
로 시작합니다. - 여러 줄 메시지를 작성합니다.
- 새 줄에서
EOD;
로 문자열을 마칩니다. - PHP는
$name
을 "Alice"로 치환합니다.因为 Heredoc은 변수 치환을 허용합니다.
Heredoc에서 변수 치환
Heredoc의 멋진 점 중 하나는 변수를 자동으로 해석한다는 것입니다. 또 다른 예제를 보겠습니다:
<?php
$fruit = "apple";
$count = 5;
$shopping_list = <<<EOD
My shopping list:
- $count {$fruit}s
- 2 bananas
- 1 loaf of bread
EOD;
echo $shopping_list;
?>
이는 다음과 같은 출력을 생성합니다:
My shopping list:
- 5 apples
- 2 bananas
- 1 loaf of bread
$count
과 $fruit
가 그들의 값을로 치환되었음을 주목하세요. {$fruit}s
문법은 변수 값 뒤에 's'를 바로 추가할 수 있게 해줍니다.
Heredoc과 HTML
Heredoc은 PHP 코드에 HTML을 포함할 때 매우 유용합니다. 예제를 보겠습니다:
<?php
<title = "My Awesome Page";
$content = "Welcome to my website!";
$html = <<<EOD
<!DOCTYPE html>
<html>
<head>
<title>$title</title>
</head>
<body>
<h1>$title</h1>
<p>$content</p>
</body>
</html>
EOD;
echo $html;
?>
이는 따옴표를 이스케이프할 필요 없이 완전한 HTML 페이지를 생성합니다!
PHP에서 Nowdoc 문자열
Nowdoc이란?
Nowdoc은 Heredoc과 매우 유사하지만 중요한 차이가 있습니다: Nowdoc은 내용을 리터럴 문자열로 처리하므로 변수나 이스케이프 시퀀스를 해석하지 않습니다.
Nowdoc 사용법
Nowdoc을 사용하려면 식별자 주위에 단일 따옴표를 사용합니다. 예제를 보겠습니다:
<?php
$name = "Bob";
$message = <<<'EOD'
Hello, $name!
This is a Nowdoc string.
Variables are not interpreted here.
EOD;
echo $message;
?>
이는 다음과 같은 출력을 생성합니다:
Hello, $name!
This is a Nowdoc string.
Variables are not interpreted here.
$name
이 "Bob"으로 치환되지 않았음을 주목하세요. 이는 Heredoc과 Nowdoc의 중요한 차이입니다.
Nowdoc 사용 시기
Nowdoc은 코드 샘플이나 해석되지 않아야 하는 텍스트를 포함할 때 적합합니다. 예를 들어:
<?php
$php_code = <<<'CODE'
<?php
$greeting = "Hello, World!";
echo $greeting;
?>
CODE;
echo "Here's a PHP code sample:\n\n";
echo $php_code;
?>
이는 다음과 같은 출력을 생성합니다:
Here's a PHP code sample:
<?php
$greeting = "Hello, World!";
echo $greeting;
?>
Nowdoc 문자열 내의 PHP 코드는 정확하게 그대로 표시됩니다.
Heredoc과 Nowdoc 비교
Heredoc과 Nowdoc의 차이를 요약하기 위해 비교 표를 보겠습니다:
기능 | Heredoc | Nowdoc |
---|---|---|
문법 | <<<EOD |
<<<'EOD' |
변수 치환 | 예 | 아니요 |
이스케이프 시퀀스 | 해석 | 해석하지 않음 |
사용 사례 | 동적 콘텐츠, HTML | 리터럴 문자열, 코드 샘플 |
결론
이제 여러분은 Heredoc과 Nowdoc에 대해 알게 되었습니다! Heredoc은 변수를 포함한 여러 줄 문자열을 다룰 때, Nowdoc은 텍스트를 리터럴로 처리할 때 유용합니다.
기억하세요, 프로그래밍은 적절한 도구를 선택하는 것입니다. 이제 Heredoc과 Nowdoc을 이해했으므로, 긴 문자열이나 HTML 스니펫을 다루는 데 더 깨끗하고 가독성 높은 코드를 작성할 수 있습니다.
계속 연습하면 곧 마스터가 될 것입니다! 행복하게 코딩하세요!
Credits: Image by storyset