PHP 매뉴얼
이전 | 11. 장. 제어 구조 | 다음

# `declare`

`declare`구문은 코드 블록의 수행 디렉티브(directive)를 활성화하기 위해 사용된다. `declare`문법은 다른 흐름 제어 구조의 문법과 비슷하다:

    declare (directive) statement

`directive`부분은 `declare`블록의 동작이 활성화되도록 해준다. 현재는 오직 한 디렉티브만 인식된다: `ticks` 디렉티브. (더 자세한 정보는 ticks 디렉티브를 볼것)

`declare`블록의 `statement`부분이 수행될것이다 - 어떻게 수행이 되고 수행중에 어떤 사이드 이펙트가 발생할지는 `directive`블록의 디렉티브에 달려있다.

`declare` 구문은 전역 유효영역 안에서 사용할수 있다. 그래서 모든 코드가 그 디렉티브에 영향을 받는다.

`<?php // 이들은 동일합니다: // 이를 사용할 수 있습니다: declare(ticks=1) { // 여기에 전체 스크립트 } // 또는 이렇게 사용할 수 있습니다: declare(ticks=1); // 여기에 전체 스크립트 ?>`

## 틱(Ticks)

틱은 `declare`블록에서 파서에 의해 수행되는 `N` 저레벨(low-level) 구문마다 발생하는 이벤트이다. `N` 값은 `declare`블록의 `directive`부분에서 `ticks=`N`` 으로 지정할수 있다.

각 틱에서 발생하는 이벤트(들)은 register_tick_function()함수 를 써서 지정한다. 자세한 것은 아래 예제를 볼것. 각 틱에서는 하나 이상의 이벤트가 발생할수 있음에 주의해야 한다.

예 11-1. PHP 각 코드 섹션의 분석표만들기(Profile)

`<?php
// 호출될대의 시간을 기록하는 함수
function profile($dump = FALSE)
{
static $profile;
// Profile에 저장된 모든 시간 리턴하고, 삭제함
if ($dump) {
$temp = $profile;
unset ($profile);
return ($temp);
}
$profile[] = microtime ();
}
// 틱 핸들러 설정
register_tick_function("profile");
// declare 블록 전에 함수를 초기화
profile();
// 코드 블록의 실행하고, 두번째 구문에 틱을 부여함
declare(ticks=2) {
for ($x = 1; $x < 50; ++$x) {
echo similar_text(md5($x), md5($x*$x)), "<br />;";
}
}
// 분석표에 저장된 데이터를 출력
print_r(profile (TRUE));
?>`

위 예제 코드는 실행 블록안의 두번째 저레벨(low-level) 구문의 시간에 따라 'declare'블록 안의 PHP코드를 분석한다. 이런 정보로 어느 코드 부분에서 느려지는지 알아볼 수 있다. 이런 처리방법은 다른 기법으로 수행할수있다: 틱을 이용하는 것은 좀더 편하고 좀더 구현하기 쉽다.

틱은 디버깅, 단순한 멀티태스킹 구현, 백그라운드 I/O와 다른 많은 작업 에 적합하게 이용할수 있다.

register_tick_function()함수와 unregister_tick_function()함수를 참고하세요.

이전 | 처음으로 | 다음
`switch` | 위로 | return