declare

O construtor declare é utilizado para configurar diretivas de execução para blocos de código . A sintaxe do declare é similar a sintaxe de outros construtores de controle .

 
declare

 
(

 
diretiva

 
)

 
instrucao





A seção diretiva permite o comportamento do bloco declare a ser configurado . Atualmente somente uma diretiva é reconhecida : a diretiva ticks . ( veja abaixo para maiores informações em diretiva ticks )

A parte instrucao do bloco declare será executada . Como ela é executada e que efeitos colaterais que podem ocorrem durante a execução dependem da configuração diretiva .

Ticks

Um tick é um evento que ocorre para cada N níveis de instruções executados pelo interpretador com o bloco declare . O valor para N é especificado utilizando ticks= N nos blocos declare das seções diretiva .

O( s ) evento(s ) que ocorre(m ) em cada tick são especificados utilizando register_tick_function( ) . Veja o exemplo abaixo para maiores detalhes . Note que mais de um evento pode ocorrer em cada tick .

Exemplo 12-1 . Histórico de um trecho de código PHP

 
?php

 
/

 
/

 
Uma

 
função

 
que

 
grava

 
o

 
tempo

 
entre

 
as

 
chamadas

 
function

 
profile

 
(

 
$dump

 
=

 
FALSE

 
)

 
{

 
static

 
$profile

 
;

 
/

 
/

 
Retorna

 
os

 
tempos

 
preservados

 
no

 
histórico

 
,

 
então

 
apaga

 
if

 
($dump

 
)

 
{

 
$temp

 
=

 
$profile

 
;

 
unset

 
($profile)

 
;

 
return

 
($temp)

 
;

 
    }

 
$profile[

 
]

 
=

 
microtime

 
()

 
;

 
}

 
/

 
/

 
Ativa

 
o

 
manipulador

 
do

 
tick

 
register_tick_function("profile")

 
;

 
/

 
/

 
Inicializa

 
a

 
função

 
antes

 
de

 
declarar

 
o

 
bloco

 
profile

 
()

 
;

 
/

 
/

 
Roda

 
um

 
trecho

 
de

 
código

 
,

 
disparando

 
um

 
tick

 
a

 
cada

 
duas

 
instruções

 
declare

 
(ticks=2

 
)

 
{

 
for

 
($x

 
=

 
1

 
;

 
$x

 
50

 
;

 
++$x

 
)

 
{

 
echo

 
similar_text

 
(md5($x)

 
,

 
md5($x*$x))

 
,

 
"

 
br

 
/

 
;"

 
;

 
    }

 
}

 
/

 
/

 
Mostra

 
os

 
dados

 
guardados

 
no

 
histórico

 
print_r

 
(profile

 
(TRUE))

 
;

 
?



No exemplo acima, o bloco 'declare' grava os tempos a cada segundo nível dentro das instruções no bloco enquanto executam. Esta informação pode ser utilizada para encontrar áreas lentas em segmentos particulares de código. Este processo pode ser realizado de outras formas, mas a utilização de ticks é mais conveniente e fácil de implementar.

Ticks são idealizados para debug , implementação de multitask simples , processos de I / O em background e afins .

Veja também : register_tick_function( ) e unregister_tick_function( ) .