declare 구조는 코드 조각의 실행 명령을 설정하는 데 사용됩니다. 선언 구문은 다른 흐름 제어 구조와 유사합니다.
declare (directive) statement
지시문 부분을 사용하면 선언 코드 세그먼트의 동작을 설정할 수 있습니다. 현재 알려진 명령어는 틱과 인코딩 두 가지뿐입니다.
참고: 인코딩은 PHP 5.3.0의 새로운 명령입니다.
선언 코드 세그먼트의 명령문 부분이 실행됩니다. 실행 방법과 실행 중에 발생하는 부작용은 지시문에 설정된 명령에 따라 다릅니다.
선언 구조는 전역 범위에서도 사용될 수 있으며 모든 후속 코드에 영향을 미칩니다(그러나 선언 구조가 있는 파일이 다른 파일에 포함된 경우 이를 포함하는 상위 파일에는 영향을 미치지 않습니다).
<?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 ?>
틱
틱(클럭 주기)은 인터프리터가 선언 코드 세그먼트에서 시간이 가능한 N 개의 하위 수준 문을 실행할 때마다 발생하는 이벤트입니다. N 값은 선언의 지시문 부분에서 Ticks=N으로 지정됩니다.
모든 진술에 시간이 정해져 있는 것은 아닙니다. 일반적으로 조건식과 매개변수 표현식은 시간 제한이 없습니다.
각 틱에서 발생하는 이벤트는 Register_tick_function()에 의해 지정됩니다. 자세한 내용은 아래 예를 참조하세요. 틱당 여러 이벤트가 발생할 수 있습니다.
예제 #1 Tick 사용 예
<?php declare(ticks=1); // A function called on each tick event function tick_handler() { echo "tick_handler() called\n"; } register_tick_function('tick_handler'); $a = 1; if ($a > 0) { $a += 2; print($a); } ?>
예제 #2 Tick 사용 예
<?php function tick_handler() { echo "tick_handler() called\n"; } $a = 1; tick_handler(); if ($a > 0) { $a += 2; tick_handler(); print($a); tick_handler(); } tick_handler(); ?>
register_tick_function() 및 unregister_tick_function()을 참조하세요.
인코딩
인코딩 지시문을 사용하여 각 스크립트의 인코딩 방법을 지정할 수 있습니다.
예제 #3 스크립트의 인코딩 방법 지정
261b8a4512696924df462ba944b4894a
주의 네임스페이스와 결합될 때 선언에 대한 유일한 합법적인 구문은 선언(인코딩='...');입니다. 여기서 ...는 인코딩된 값입니다. 그리고 선언(인코딩='...') {}은 네임스페이스와 결합될 때 구문 분석 오류를 생성합니다.
PHP 5.3에서는 컴파일 시 --enable-zend-multibyte를 지정하지 않으면 선언의 인코딩 값이 무시됩니다.
phpinfo()를 사용하지 않으면 PHP는 컴파일 중에 --enable-zend-multibyte가 지정되었는지 여부를 표시하지 않습니다.