PHP 태그

본문

PHP가 파일을 해석할 때, PHP는 문서에서 시작 태그 <?php 와 종료 태그 ?> 를 찾습니다. 각 태그는 PHP에게 스크립트 해석을 시작하고 중지하도록 지시합니다. 이러한 방식으로 PHP는 시작 및 종료 태그 바깥의 모든 항목을 해석하지 않습니다. PHP는 한 쌍의 시작 및 종료 태그를 이용하여 모든 종류의 다른 문서에 혼합될 수 있습니다.

PHP에는 짧은 태그 <?= 가 포함되어 있으며 <?php echo 와 동일한 역할을 합니다.

PHP는 시작 태그에서 php를 생략한 <? 태그를 이용할 수 있습니다. 그러나 php가 생략된 시작 태그는 php.ini 설정 파일의 short_open_tag 옵션을 활성화하거나 PHP를 –enable-short-tags 옵션으로 구성한 경우에만 사용 가능하므로 일반적으로 권장하지 않습니다.

파일에 PHP 코드만 포함되어 있는 경우 파일 끝에 PHP 종료 태그를 생략하는 것이 좋습니다. 프로그래머가 스크립트의 마지막 지점에서 출력을 보내려는 의도가 없으면 비어있는 지점부터 PHP가 출력 버퍼링을 시작하기 때문에 코드 사용 중 원하지 않는 결과를 초래할 수 있습니다. 종료 태그의 생략은 PHP 스크립트 뒤에 실수로 공백이나 줄 바꿈이 추가되는 우발적인 오류를 방지할 수 있습니다.

<?php
    echo "Hello world";
    // … 기타 여러 내용들을 포함합니다.
    echo "마지막 줄입니다";
    // PHP 코드는 종료 태그 없이 끝나게 됩니다.

변경 내역

버전 설명
7.0.0 ASP 태그 <%, %>, <%= 스크립트 태그 <script language=”php”> 는 PHP에서 지원되지 않습니다.
5.4.0 짧은 태그 <?=short_open_tag 옵션 활성화와 무관하게 사용 가능합니다.
The source of this document is at PHP.net.   
  

HTML에서 벗어나기

본문

PHP는 시작 및 종료 태그 바깥의 모든 항목을 해석하지 않으므로 모든 종류의 다른 문서에 혼합될 수 있습니다. 이를 통해 PHP를 HTML 문서에 포함시켜 템플릿을 만들 수 있습니다.

PHP가 파일을 해석할 때, PHP는 스크립트의 시작과 종료 태그를 찾습니다. 시작과 종료 태그 밖에 있는 부분은 PHP 해석기가 무시하게 됨으로써, PHP는 어떠한 종류의 문서에도 포함될 수 있습니다. 대부분의 경우 다음 예제와 같이 PHP가 포함된 HTML 문서를 볼 수 있습니다.

<p>이 부분은 무시합니다.</p>
<?php echo '이 부분은 해석합니다.'; ?>
<p>이 부분도 무시합니다.</p>

조금 더 복잡한 구조도 사용할 수 있습니다. PHP가 종료 태그에 도달한 경우 조건문 처리 상태에 있는 경우를 제외하고 다음 시작 태그에 닿을 때까지 찾은 모든 것을 출력합니다. 이 경우 PHP는 건너 뛸 항목을 결정하기 전에 조건문을 먼저 해석합니다. 다음 예를 참조하십시오.

Example #1 복잡함에서 벗어나기

<?php 
$expression = true;
if ($expression == true) { 
?>
  <p>참일 경우 출력하는 문장입니다</p>
<?php
} else {
?>
  <p>이 문장은 함께 출력됩니다</p>
<?php
}
?>

이 예제에서 PHP는 시작과 끝 태그 외부에 있더라도 조건이 충족되지 않은 부분을 건너 뜁니다. HTML보다 PHP 조건문이 우선적으로 처리되어 두 문장은 함께 출력되지 않습니다.

많은 내용을 출력하기 위하여 PHP 종료 태그를 이용하는 것은 echo 또는 print 를 통한 출력보다 효율적입니다.

PHP 5는 PHP 구성 방법에 따라 다섯 가지의 서로 다른 시작 및 종료 태그를 사용할 수 있습니다. 이 중 <?php ?><script language=”php”> </script> 두 가지는 기본값으로 항상 사용할 수 있습니다. PHP 5.4.0 이상에서 항상 사용할 수있는 짧은 태그 <?= ?> 도 있습니다.

다른 두 가지는 짧은 태그 <? ?> 와 ASP 스타일 태그 <% %> 입니다. 일부 사람들에게 짧은 태그와 ASP 스타일 태그는 편리함을 위한 도구로 사용되지만 이식성이 떨어지기 때문에 일반적으로 권장하지 않습니다.

Note:

PHP를 XML이나 XHTML에 넣을 경우 <?php ?> 태그를 사용함으로써 표준과 호환을 유지할 수 있습니다.

Example #2 PHP 시작과 끝 태그

1.  <?php echo 'PHP 문서를 XHTML 또는 XML 과 호환시키는 일반적인 방법입니다.'; ?>

2.  <script language="php">
        echo 'FrontPage와 같은 특정 에디터에서 정상 출력되지 않는 경우가 있습니다.';
    </script>
    위 구문은 PHP 7.0.0에서 제거되었습니다.

3.  <? echo '이 코드는 short_open_tag 옵션이 활성화 된 경우에만 작동합니다.'; ?>
    
4.  짧은 태그 <?= $expression ?> 은 PHP 5.4.0 이상에서 항상 활성화되어 작동합니다.
    <? echo $expression ?> 을 간단히 쓴 모양입니다.

5.  <% echo 'ASP 형식 태그를 쓸 수도 있습니다'; %>
    <%= $variable; %>은 "<% echo $variable %>"을 간단히 쓴 모양입니다.
    위 두 구문은 PHP 7.0.0에서 제거되었습니다.

예제에서 볼 수 있는 태그 중 1번과 2번은 PHP 5에서 항상 사용할 수 있지만, 1번이 가장 보편적으로 사용되며 프로그래머에게 권장됩니다. 예제 2번은 PHP 7.0.0에서 제거되었습니다.

예제 3번의 짧은 태그는 php.ini 설정 파일의 short_open_tag 옵션을 활성화하거나 PHP를 –enable-short-tags 옵션으로 구성한 경우 사용할 수 있습니다.

예제 5번의 ASP 형식 태그는 php.ini 설정 파일의 asp_tags 옵션을 활성화한 경우 사용할 수 있으며, PHP 7.0.0에서 제거되었습니다.

Note:

짧은 태그는 모든 서버에서 지원되지 않을 수 있으므로 사용자가 제어 할 수 없는 PHP 서버에서 재배포 또는 배포를 위한 응용 프로그램이나 라이브러리를 개발할 경우 짧은 태그를 사용하지 않아야 합니다. 재배포 가능한 코드의 경우 짧은 태그를 사용하지 마십시오.

Note:

PHP 5.2를 포함한 이전 버전은 단순히 시작 태그 <?php만 존재하는 파일을 허용하지 않습니다. PHP 5.3부터 시작 태그 뒤에 공백 문자가 하나 이상 있을 경우 허용됩니다.

Note:

PHP 5.4부터 짧은 태그 <?=short_open_tag 옵션 활성화와 무관하게 사용 가능합니다.

The source of this document is at PHP.net.   
  

명령 간의 구분

본문

C 또는 Perl과 같은 방식으로 PHP는 세미콜론으로 명령을 종료합니다. 종료 태그 직전의 명령과 마지막 줄은 세미콜론을 생략할 수 있습니다. 만약 PHP 종료 태그 다음의 줄 바꿈이 있다면 함께 출력됩니다.

<?php
    echo '이것은 테스트 문장입니다';
?>

<?php echo '이것은 테스트 문장입니다' ?>

<?php echo '마지막 종료 태그는 생략 가능합니다';

Note:

PHP의 닫기 태그는 선택적으로 생략할 수 있으며, 때로는 유용하게 사용할 수 있습니다. 특정 상황에서 include나 require를 사용할 경우 파일 끝에 원하지 않은 공백이 발생하지 않는 경우 헤더에 추가 응답을 넣을 수 있습니다.. 또한 출력 버퍼링을 사용하는 경우에도 포함된 파일 끝에 나타나는 불필요한 공백을 피할 수 있습니다.

The source of this document is at PHP.net.   
  

주석

본문

PHP는 C 언어, C++ 언어, Unix 쉘 형식의 주석(Perl 스타일)을 지원합니다. 예를 들면 다음과 같습니다.

<?php
    echo 'This is a test'; // 한줄짜리 C 스타일 주석
    /* 여러 줄의 주석
       아래 줄까지 주석으로 처리됩니다. */
    echo 'This is yet another test';
    echo 'One Final Test'; # 쉘 형식의 한줄짜리 주석
?>

한 줄 주석 형식은 자신의 다음에 오는 줄바꿈 이전 문장을 모두 주석으로 처리합니다. 한줄 주석 // … ?> 또는 # … ?> 뒤에 이어지는 HTML 코드는 PHP 주석의 영향을 받지 않습니다. PHP 종료 태그 ?> 이후의 HTML 또한 PHP 주석의 영향을 받지 않고 그대로 화면에 출력됩니다. asp_tags  옵션이 구성되어 있는 경우 // %>나 # %>에도 동일하게 적용됩니다. 그러나 한 줄 주석 다음에 오는 </script> 종료 태그는 역할을 하지 않고 주석으로 출력됩니다.

<h1>This is <?php // echo 'simple';?> example</h1>
<p>위 문장은 'This is example' 로 출력됩니다.</p>

C 언어 형식 주석은 첫 */ 에서 종료합니다. 그러므로 C 언어 형식 주석을 중첩하지 않아야 합니다. 이는 커다란 크기의 코드 블럭을 주석 처리하는 경우 자주 발생하는 실수입니다. 주석은 괄호와 같이 중첩되는 속성을 가지지 않습니다.

<?php
    /* 
    echo 'This is example'; /* 이 주석은 문제가 있습니다 */
    */
?>
The source of this document is at PHP.net.   
  

소개

본문

PHP는 열 가지 기본 자료형을 지원합니다.

네 가지 스칼라형:

네 가지 복합형:

  • Array
  • Object
  • Callable
  • Iterable

마지막으로 두 가지 특수형:

  • Resource
  • NULL

이 매뉴얼에는 설명을 위해서 몇가지 모의형을 사용합니다:

  • Mixed
  • Number
  • Callback (또는 Callable)
  • Array|Object
  • Void

그리고 모의 변수 $…

매뉴얼에 Double 자료형에 대한 일부 참조가 남아 있습니다. Float와 Double은 동일합니다. 두 이름은 역사적인 이유로만 존재합니다.

일빈적으로 변수의 자료형은 프로그래머가 직접 설정하지 않습니다. 자료형은 PHP가 해석되는 도중 해당 변수가 사용되는 컨텍스트에 따라 자동으로 결정됩니다.

Note표현에 따른 자료형과 값을 확인하려면, var_dump() 함수를 사용하십시오.

디버깅을 위해 자료형을 쉽게 읽을 수 있는 형태를 얻으려면, gettype() 함수를 사용하십시오. 특정한 자료형을 확인하려면 gettype() 대신 is_type()을 사용하십시오. 몇 가지 예제가 있습니다.

<?php
$a_bool = TRUE;        // Boolean, 논리
$a_str1  = "foo";      // String, 문자열
$a_str2  = 'foo';      // String, 문자열
$an_int = 12;          // Integer, 정수
$an_float = 12.3456;   // Float, 부동 소수점 숫자

echo gettype($a_bool); // 출력: boolean
echo gettype($a_str);  // 출력: string

// 변수의 자료형이 정수일 경우 4를 더합니다.
if (is_int($an_int)) {
    $an_int += 4;
}

// $bool이 문자열이라면 출력합니다.
// (아무것도 출력하지 않음)
if (is_string($a_bool)) {
    echo "문자열: $a_bool";
}
?>

변수를 강제로 특정 자료형으로 변환하려면, 변수를 형변환하거나 settype() 함수를 사용하십시오.

변수의 자료형은 상황과 시점에 따라서 유동적으로 변경될 수 있습니다. 자세한 정보는 자료형 조절을 참고하십시오. 자료형 비교표는 유용하게 사용 가능한 여러 자료형과 관련된 예제를 참고할 수 있습니다.

The source of this document is at PHP.net.   
  

Boolean

본문

Boolean은 가장 간단한 자료형으로 논리적 표현을 사용합니다. TRUE 혹은 FALSE 둘 중 하나의 값을 가집니다.

문법

Boolean의 값은 TRUE, FALSE를 사용합니다. 지정하는 값은 대소문자를 구분하지 않습니다.

 <? php
$ foo = True; // TRUE 값을 $ foo에 할당
?>  

일반적으로 연산자를 이용하여 반환된 Boolean은 제어 구조로 전달됩니다.

<?php
// == 는 테스트를 위한 연산자입니다.
// 값이 같다면 boolean을 반환합니다.
if ($action == "show_version") {
    echo "현재 버전은 1.23입니다.";
}

// 아래와 같은 연산은 필요하지 않습니다.
if ($show_separators == TRUE) {
    echo "<hr>\n";
}

// 아래의 연산은 바로 위의 예제와 동일하게 동작합니다.
// 위 예제와 동일한 상황에서 == 연산자를 생략할 수 있습니다. 
if ($show_separators) {
    echo "<hr>\n";
}
?>

Boolean으로 변환하기

(bool) 또는 (boolean) 캐스트를 이용하여 Boolean으로 명시적인 변환이 가능합니다. 그러나 연산자, 함수, 제어 구조에 Boolean이 필요한 경우 값이 자동으로 변환되므로 대부분의 경우 캐스트가 필요하지 않습니다.

자료형 조절을 참조하십시오.

Boolean으로 변환할 때 다음 값은 FALSE로 간주됩니다.

  • Boolean FALSE
  • Integer 0 또는 -0(영)
  • Float 0.0 또는 -0.0(영)
  • 비어있는 String 또는 String “0”
  • 요소가 없는 Array
  • 특수 유형 NULL (설정되지 않은 변수 포함)
  • 비어있는 태그에서 생성된 SimpleXML 객체

다른 모든 값은 TRUE (Resource 및 NaN 포함)로 간주됩니다.

경고 : -1은 다른 0이 아닌 값(음수 또는 양수)과 함께 TRUE로 간주됩니다!

<?php
var_dump((bool) "");        // bool(false)
var_dump((bool) 1);         // bool(true)
var_dump((bool) -2);        // bool(true)
var_dump((bool) "foo");     // bool(true)
var_dump((bool) 2.3e5);     // bool(true)
var_dump((bool) array(12)); // bool(true)
var_dump((bool) array());   // bool(false)
var_dump((bool) "false");   // bool(true)
?>         
The source of this document is at PHP.net.   
  

Integer

본문

Integer는 소수점을 포함하지 않는 0을 포함한 음수와 양수입니다.

참조 :

  • 임의 길이 정수/GMP
  • Float 부동 소수점 숫자
  • 임의 정밀도/BCMath

문법

Integer는 Decimal(10진), Hexadecimal(16진), Octal(8진), Binary(2진) 표기법으로 지정할 수 있습니다. 부정 연산자 -는 음수의 표현으로 사용합니다.

Binary(2진) 표기법은 PHP 5.4.0부터 사용할 수 있습니다.

Octal(8진) 표기법을 사용하려면 숫자 앞에 0을, Hexadecimal(16진) 표기법을 사용하려면 숫자 앞에 0x를 붙이십시오. Binary(2진) 표기법을 사용하려면 숫자 앞에 0b를 붙이면 됩니다.

Example #1 Integer의 표기법

<?php
$ a = 1234;       // Decimal(10진)
$ a = 0123;       // Octal(8진), Demical 83
$ a = 0x1A;       // Hexadecimal(16진), Demical 26
$ a = 0b11111111; // Binary(2진), Demical 255
?> 

공식적인 Integer의 표기 구조는 다음과 같습니다.

Decimal     : [1-9][0-9]*
            | 0

Hexadecimal : 0[xX][0-9a-fA-F]+

Octal       : 0[0-7]+

Binary      : 0[bB][01]+

Integer     : Decimal
            | Hexadecimal
            | Octal
            | Binary

Integer의 크기는 플랫폼에 따라 다르지만 32비트 플랫폼을 기준으로 최대 231 – 1 의 값을 지정할 수 있습니다. 32비트를 사용하는 PHP 7 이전의 Windows를 제외한 64비트 플랫폼의 Integer의 크기는 최대 약 9E18입니다. PHP는 부호 없는 Integer를 지원하지 않습니다. Integer의 크기를 위한 PHP_INT_SIZE와, PHP 5.0.5 이후 PHP_INT_MAX를 사용하여 최대 값을, PHP 7.0.0 이후 PHP_INT_MIN을 사용하여 최소값을 지정할 수 있습니다.

경고 : PHP 7 이전에는 유효하지 않은 숫자(8 또는 9)가 Octal(8진) 표기법으로 제공되면 나머지 숫자는 무시되었습니다. PHP 7부터 구문 분석 오류가 발생합니다.

Integer 오버플로우

PHP가 Integer의 범위를 벗어나는 숫자를 발견하면 Float로 해석됩니다. Integer의 범위를 초과하는 숫자를 생성하는 연산은 Float를 반환합니다.

Example #2 32비트 시스템의 Integer 오버플로우

<?php
$large_number = 2147483647;
var_dump($large_number); // Integer 2147483647

$large_number = 2147483648;
var_dump($large_number); // Float 2147483648

$million = 1000000;
$large_number = 50000 * $million;
var_dump($large_number); // Float 50000000000
?>

Example #3 64비트 시스템의 Integer 오버플로우

<?php
$large_number = 9223372036854775807;
var_dump($large_number); // Integer  9223372036854775807

$ large_number = 9223372036854775808;
var_dump($large_number); // Float 9.2233720368548E + 18

$million = 1000000;
$large_number = 50000000000000 * $million;
var_dump($large_number); // Float 5.0E + 19
?>
The source of this document is at PHP.net.