PHP 모드와 HTML 모드
HTML 모드와 PHP 모드
PHP는 HTML을 포함하고 있습니다. 그렇기 때문에 소스중에서 어느부분이 HTML 부분인지 또한 어느부분이 PHP 부분인지 구분할 필요가 있습니다.
그래서 PHP는 두가지 모드로 동작을 하게 되는데, HTML 모드와 PHP 모드입니다.
기본적으로 HTML 모드이기 때문에 PHP 모드로 바꾸고 싶을 때는 PHP 태그를 사용합니다.
PHP Tag
PHP를 시작하는 태그: <?php
PHP 코드의 끝을 나타내는 닫는 태그: ?>
PHP 코드만 존재할 때
<?php
echo "Hello world";
위와 같이 PHP만으로 이루어진 경우 닫는 태그를 사용하지 않습니다. 닫는 태그를 쓴다고 에러가 나거나 하지는 않지만 잠재적인 에러(이건 나중에 알게 됩니다)를 미연에 방지하기 위해 닫는 태그를 사용하지 않는 방식을 취하고 있습니다.
HTML과 PHP가 섞여 있을 때
<!DOCTYPE html>
<html>
<head>
<title>PHP 프로그램</title>
</head>
<body>
<?php
echo "Hello world";
?>
</body>
</html>
PHP는 위와 같은 태그가 나오면 "앗! 이제 내 차례네~" 하고 열심히 PHP 코드를 처리하게 됩니다.
계산이 모두 끝나고 ?> 와 같은 종료 태그가 나오면 PHP는 HTML 모드로 되돌아 갑니다.
PHP에서 한 줄의 끝 구분하기
우리가 글을 쓸 때 문장의 마지막에 마침표(.)를 찍듯이, PHP 도 한 문장이 끝날 때 마침표(;)를 찍습니다.
PHP에게 "이게 한 문장이야~" 라고 친절히 알려주는 것이죠.
우리는 글을 쓸 때 마침표를 찍지 않아도 다 알아볼 수 있지만, PHP는 마침표가 없으면 마침표가 나올 때까지
한 문장이라고 해석을 하게 됩니다. 그래서 반드시!!! 한 문장이 끝나면 마침표를 찍어줘야 합니다.
PHP에서의 마침표는 ; (세미콜론) 입니다.
우리는 줄이 바뀌면 새로운 문장이라고 생각합니다. 그러나 PHP는 줄이 바뀌는 것은 의미가 없습니다.
세미콜론을 기준으로 문장을 판단하기 때문에 다음줄로 내려가 있다고 하더라도 한 문장이라고 생각합니다.
소스코드에서 줄바꿈을 하는 이유는 단지 프로그래머가 보기 편하자는 의도일 뿐입니다.
<?php
echo "테스트 입니다.";
?>
<?php
echo "만약 세미콜론이 없다면?"
echo "이렇게 하면 에러가 나겠지요? 한줄에 두개의 커맨드가 올수는 없습니다."
?>
<?php echo "그러나 이렇게 하면 됩니다."; echo "우리가 보는 엔터는 PHP에서 무의미 합니다.^^"; ?>
<?php echo "한줄인 경우에는 세미콜론(;)을 하지 않아도 됩니다." ?>`
위 소스는 다음과 같이 에러 메시지를 띄웁니다.
소스 코드의 6번째 줄이 틀렸다는 소리죠.. (대부분의 경우 6번째줄이 틀렸다고 하면 5,6,7줄을 보면 됩니다.)
PHP 자체 문법 체크에서 콤마(,)나 세미콜론(;)이 빠졌을 것 같다고 알려주네요.
정말 프로그램을 짜다보면 자주 보는 에러가 아닐 수 없습니다. ^^;;
에러가 발생한 이유는 두 번째 코드에 세미콜론이 없기때문입니다.
세미콜론으로 한 문장을 판단하는데 세미콜론이 없어서 두 개의 문장이 붙어버렸거든요.
PHP는 한문장이 끝난거 같은데 아직 문장이 계속되고 있어서 의아해하며 에러를 보여준것입니다.
우리는 보기에 두줄로 표시되어 있어 두 개의 문장이라 생각하지만 PHP 한 문장이라 생각하여 발생한 에러입니다.
네 번째 코드에는 마지막에 마침표가 없는데, 닫는 태그(?>) 에는 세미콜론(;) 이 포함되어 있다고 보시면 됩니다.
그럼 코드를 수정하여 에러를 잡아봅시다.
<?php
echo "테스트 입니다.";
?>
<?php
echo "만약 세미콜론이 없다면?";
echo "이렇게 하면 에러가 나겠지요? 한줄에 두개의 커맨드가 올수는 없습니다.";
?>
<?php echo "그러나 이렇게 하면 됩니다."; echo "우리가 보는 엔터는 PHP에서 무의미 합니다.^^"; ?>
<?php echo "한줄인 경우에는 세미콜론(;)을 하지 않아도 됩니다." ?>`
자 다음과 같이 5, 6번째에 세미콜론을 추가했습니다.
그 결과는 ....
( 에러를 보고 어느 부분이 틀렸는지를 확인하고 수정하는 작업이 아주 중요합니다.)
PHP 코드에 주석 달기
주석이라는 것은 코드에 덧붙여놓은 코드에 대한 설명입니다.
주석 부분은 PHP가 처리하지 않고 그냥 넘어가 버리게 됩니다.
PHP는 기본적으로 C와 Perl 과 같은 형식의 주석을 제공합니다.
주석 방법 | 설명 |
---|---|
// | 한줄 주석 처리 ( 가장 일반적 ) |
# | 한줄 주석 처리 |
/* */ | 여러줄 주석 처리 ( /* 시작 */ 끝 ) |
<?php echo "오늘은 비가 오네요<BR>"; // 2000-11-20 ?>
<?php echo "비가 오면 생각나는 그사람~~~♬<BR>"; # 한줄 주석 ^^ ?>
<?php echo "오늘 하루도 즐겁게 힘차게~ ^^<BR>";
/* echo "아 여기부터는 주석처리되기 때문에 ";
echo "결과에는 반영이 안되겠군요.. ㅜㅜ<BR>"; */
?>
주석 처리 하는 방법은 위와 같고, 결과는 다음과 같습니다.
오늘은 비가 오네요
비가 오면 생각나는 그사람~~~♬
오늘 하루도 즐겁게 힘차게~ ^^
결과에 보시면 아시겠지만 주석 처리된 부분은 결과에 반영되지 않습니다. ^^
주석을 다는 이유는 코드에 대한 설명을 해놓기 위해서 입니다.
한번 프로그램을 짜고 다시는 보지 않으려면 주석이 필요없지만,
나중에 재사용하거나 소스를 다시봐야 할 때는 주석이 없을 경우 코드를 이해하기가 무척힘이 듭니다.
왜냐하면 그때 무슨 생각을 갖고 이 부분을 코딩하였는지 알 수 없기 때문입니다.
따라서 주석을 다는 버릇을 반드시 들이시기 바랍니다.
단언컨데 주석은 많이 달면 많이 달수록 좋습니다.
그렇다고-_-;;; 쓸데없는 주석을 달면 안돼요!!!
참고로 여러줄 주석속에 다시 여러줄 주석을 넣는 다중 주석은 허용되지 않습니다.
<?php
/* 아자아자 /* 어~ 이러면 안돼~ */ 이러면 에러납니다.. */
?>