PHP의 기본적인 문법에 대하여 알아봅니다.
PHP 기본 구문
PHP는 HTML 모드를 기준으로 해석되다가 PHP의 시작을 알리는 시작태그를 만나면 PHP 모드로 전환하여 해석된다. 이런 방식의 해석은 시작과 끝 태그 밖에 있는 부분은 PHP 해석기가 무시하게 되므로, PHP가 어떠한 문서에도 포함될 수 있는 근거가 된다.
<p>이 부분은 PHP 해석기가 무시한다.</p>
<?php echo '이 부분은 PHP 해석기가 해석한다.'; ?>
PHP의 시작태그 와 끝태그
시작태그 | 끝태그 | 설명 |
---|---|---|
<?php | ?> | XML과 구분하기 위한 방법 |
<? | ?> | 간소화된 방법으로 PHP의 기본설정은 짧은 태그를 허용하지 않는다. php.ini 파일의 short_open_tag = On 으로 변경하면 사용가능하다. |
<% | %> | ASP 방식 |
<script language="php"> | </script> | 스크립트 방식 |
<?php echo 'XHTML나 XML 문서와 호환시키려면, 이렇게 쓰세요'; ?>
<script language="php">
echo '어떤 에디터 (프론트페이지같은)는
처리 명령을 좋아하지 않습니다';
</script>
<? echo '이런 형태가 제일 간단한 SGML 처리명령입니다'; ?>
<?= expression ?>은 "<? echo expression ?>"을 간단히 쓴 모양입니다
<% echo ("ASP스타일 태그를 쓸 수도 있습니다"); %>
<%= $variable; # 이것은 "<% echo . . ." %>을 간단히 쓴 모양입니다
가장 보편적인 방식은, 첫번째 방식이며, 권장되는 방식이다.
두번째의 단축형 태그를 사용할 경우, php.ini 설정 파일 지시어 short_open_tag
를 활성화하거나, php를 --enable-short-tags
옵션으로 설정해야 사용할 수 있다.
ASP 형식 태그를 사용할 경우, php.ini 설정 파일 지시어 asp_tags
를 활성화 했을 경우에만 사용할 수 있다.
위 예제를 실행했을때, 아무것도 출력하지 않거나, 다운로드 할 것인지 묻거나, 모든 내용이 텍스트 문서처럼 보였다면, 해당 서버에서 PHP가 작동하지 않거나 제대로 설정되지 않은 것이다.
PHP 명령 구분
문장의 마지막에 마침표(.)를 찍듯이 PHP도 각 명령 구문 끝을 세미콜론(;)으로 종료해야 한다.
- 명시적으로 문장의 끝을 표현해주면, 코드의 가독성과 명확성을 높여주며, PHP 해석기들이 문맥을 파악하지 않고도 쉽게 문장을 구분할 수 있게 된다.
- 문장이 하나 뿐이거나 문장의 바로뒤에 끝 태그(?>)가 있다면 PHP는 자동으로 세미콜론을 적용한다.
<?php
echo 'This is a test';
?>
<?php echo 'This is a test' ?>
<?php echo '마지막 닫기 태그를 생략합니다';
파일의 마지막에서 PHP 블록의 끝맺음 태그를 생략할 수 있으며, 때로는 유용합니다. include나 require를 사용할 경우, 원하지 않은 공백이 파일 마지막에 들어가지 않게 함으로써, 나중에 추가 응답 헤더를 추가할 수 있습니다. 또한 출력 버퍼링을 사용할 경우에도 포함한 파일들에 의해서 각 파트의 마지막에 원하지 않은 공백을 피할 수 있으므로 도움이 됩니다.
PHP 주석
PHP는 C와 Perl과 같은 형식의 주석을 제공하며, PHP 해석기는 이를 만나면 무시한다.
주석 방법 | 설명 |
---|---|
// | 한 줄 주석 처리 |
# | 한 줄 주석 처리 |
/* */ | 여러 줄 주석 처리 |
<?php
echo 'This is a test'; // 한줄짜리 c++ 스타일 주석
/* 여러줄의 주석
이줄까지 주석처리 된다 */
echo 'This is yet another test';
echo 'One Final Test'; # 쉘 형식의 한줄짜리 주석
?>
PHP 빈값으로 간주하는 것들
PHP의 조건문이나 그 밖의 경우에 변수에 담긴 값들을 검사하는 경우에 알아야 하는 것들이다.
""
: 빈문자열0
: 정수 0"0"
: 문자열 0NULL
FALSE
array()
: 빈배열var $var;
: 클래스안에서 값없이 선언된 변수