declare

(PHP 4, PHP 5, PHP 7, PHP 8)

declare 구문은 코드 블록에 대한 실행 지시문을 설정하는 데 사용됩니다. declare의 구문은 다른 흐름 제어 구문의 구문과 유사합니다.

declare (directive)
    statement
                

directive 섹션에서는 declare 블록의 동작을 설정할 수 있습니다. 현재 세 가지 지시문만 인식됩니다. ticks 지시문(ticks 지시문에 대한 자세한 내용은 아래 참조), encoding 지시문(encoding 지시문에 대한 자세한 내용은 아래 참조) 및 strict_types 지시문(자세한 내용은 다음의 strict typing 섹션 참조) 유형 선언 페이지)

지시문은 파일이 컴파일될 때 처리되므로 리터럴만 지시문 값으로 제공될 수 있습니다. 변수와 상수는 사용할 수 없습니다. 설명:

                  
<?php
// This is valid:
declare(ticks=1);

// This is invalid:
const TICK_VALUE = 1;
declare(ticks=TICK_VALUE);
?>
                  
                

declare 블록의 명령문 부분이 실행됩니다. 실행 방법과 실행 중 발생하는 부작용은 지시문 블록에 설정된 지시문에 따라 달라질 수 있습니다.

declare 구조는 전역 범위에서도 사용할 수 있으며 그 뒤에 오는 모든 코드에 영향을 줍니다(그러나 declare이 있는 파일이 포함된 경우 상위 파일에는 영향을 미치지 않음).

                  
<?php
// these are the same:

// you can use this:
declare(ticks=1) {
    // entire script here
}

// or you can use this:
declare(ticks=1);
// entire script here
?>
                  
                
Ticks

틱은 declare 블록 내에서 파서가 실행하는 모든 N 개의 낮은 수준 틱 가능 문에 대해 발생하는 이벤트입니다. N 값은 declare 블록의 지시문 섹션 내에서 ticks=N을 사용하여 지정됩니다.

모든 문을 체크할 수 있는 것은 아닙니다. 일반적으로 조건 표현식과 인수 표현식은 체크할 수 없습니다.

각 틱에서 발생하는 이벤트는 register_tick_function()을 사용하여 지정됩니다. 자세한 내용은 아래 예를 참조하세요. 각 틱에 대해 둘 이상의 이벤트가 발생할 수 있습니다.

예제 #1 틱 사용 예

                  
<?php

declare(ticks=1);

// A function called on each tick event
function tick_handler()
{
    echo "tick_handler() called\n";
}

register_tick_function('tick_handler'); // causes a tick event

$a = 1; // causes a tick event

if ($a > 0) {
    $a += 2; // causes a tick event
    print($a); // causes a tick event
}

?>
                  
                

register_tick_function()unregister_tick_function()도 참조하십시오.

Encoding

스크립트의 인코딩은 encoding 지시문을 사용하여 스크립트별로 지정할 수 있습니다.

예제 #2 스크립트에 대한 인코딩을 선언합니다.

                  
<?php
declare(encoding='ISO-8859-1');
// code here
?>
                  
                

주의 네임스페이스와 결합할 때 선언에 대한 유일한 유효한 구문은 declare(encoding='...')입니다. 여기서 ...는 인코딩 값입니다. declare(encoding='...') {}은 네임스페이스와 결합할 때 구문 분석 오류를 발생시킵니다.

zend.script_encoding도 참조하십시오.