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도 참조하십시오.