declare

Konstrukt declare se používá k nastavení prováděcích direktiv pro blok kódu . Syntaxe declare je podobná syntaxi ostatnícj konstruktů pro řízení toku :






Část directive umožňuje nastavit chování bloku , který být ovlivněn pomocí declare . V současnosti je rozpoznávána pouze jediná direktiva : ticks . ( Pro více informací viz níže - direktiva ticks )

Část statement bloku declare bude provedena - jak bude provedena a jaké vedlejší efekty nastanou během provádění může záležet na direktivě nastavené v bloku directive .

Ticks

Tick je událost , která nastane pro každých N nízkoúrovňových konstruktů provedených parserem uvnitř bloku declare . Hodnota N je specifikována pomocí ticks= N uvnitř sekce directive bloku declare .

Událost( i) , která nastane při každém ticku , se specifikuje pomocí register_tick_function( ) . Více podrobností - viz příklad níže . Uvědomte si , že na každý tick může nastat více než jedna událost .

Příklad 12-1 .

 
pre

 
?php

 
/

 
/

 
A

 
function

 
that

 
records

 
the

 
time

 
when

 
it

 
is

 
called

 
function

 
profile

 
(

 
$dump

 
=

 
FALSE

 
)

 
{

 
static

 
$profile

 
;

 
/

 
/

 
Return

 
the

 
times

 
stored

 
in

 
profile

 
,

 
then

 
erase

 
it

 
if

 
($dump

 
)

 
{

 
$temp

 
=

 
$profile

 
;

 
unset

 
($profile)

 
;

 
return

 
($temp)

 
;

 
    }

 
$profile[

 
]

 
=

 
microtime

 
()

 
;

 
}

 
/

 
/

 
Set

 
up

 
a

 
tick

 
handler

 
register_tick_function("profile")

 
;

 
/

 
/

 
Initialize

 
the

 
function

 
before

 
the

 
declare

 
block

 
profile

 
()

 
;

 
/

 
/

 
Run

 
a

 
block

 
of

 
code

 
,

 
throw

 
a

 
tick

 
every

 
2nd

 
statement

 
declare

 
(ticks=2

 
)

 
{

 
for

 
($x

 
=

 
1

 
;

 
$x

 
50

 
;

 
++$x

 
)

 
{

 
echo

 
similar_text

 
(md5($x)

 
,

 
md5($x*$x))

 
,

 
"

 
lt;br

 
gt

 
;"

 
;

 
    }

 
}

 
/

 
/

 
Display

 
the

 
data

 
stored

 
in

 
the

 
profiler

 
print_r

 
(profile

 
(TRUE))

 
;

 
?

 
/

 
pre



The example profiles the PHP code within the 'declare' block, recording the time at which every second low-level statement in the block was executed. This information can then be used to find the slow areas within particular segments of code. This process can be performed using other methods: using ticks is more convenient and easier to implement.