declare

Instrukcja declare służy do ustawienia dyrektyw wykonawczych dla bloku kodu . Składnia instrukcji jest podobna do składni innych struktur kontrolnych :

 
declare

 
(

 
dyrektywa

 
)

 
instrukcje





Argument dyrektywa pozwala na ustawienie zachowania się danego bloku declare . W chwili obecnej rozpoznawana jest tylko jedna dyrektywa : ticks . ( Więcej informacju na temat dyrektywy ticks w dedykowanym podrozdziale ) .

Kod zawarty w bloku instrukcje Kod zawarty w bloku instrukcje będzie wykonywany . Sposób i poboczne efekty wykonania tego kodu mogą zależeć od argumentu dyrektywa .

Ticks

Tyknięcie ( tick ) jest zdarzeniem , które następuje po każdych N niskopoziomowych instrukcjach wykonywanych przez parser wewnątrz bloku declare . Wartość parametru N jest określana przez umieszczenie wyrażenia ticks= N wewnątrz argumentu dyrektywa danego bloku declare .

Zdarzenie wywoływane na każde tyknięcie określa się przez użycie funkcji register_tick_function( ) . Więcej szczegółów znajduje się w poniższym przykładzie . Proszę pamiętać , że z każdym tyknięciem może być wywoływane więcej niż jedno zdarzenie .

Przykład 12-1 . Profilowanie sekcji kodu PHP

 
?php

 
/

 
/

 
funkcja

 
,

 
która

 
zapisuje

 
czas

 
jej

 
wywołania

 
function

 
profile

 
(

 
$wyrzuć

 
=

 
FALSE

 
)

 
{

 
static

 
$profile

 
;

 
/

 
/

 
zwróć

 
tablicę

 
czasów

 
wywołania

 
i

 
wykasuj

 
jej

 
lokalną

 
kopię

 
if

 
($wyrzuć

 
)

 
{

 
$temp

 
=

 
$profile

 
;

 
unset

 
($profile)

 
;

 
return

 
($temp)

 
;

 
    }

 
$profile[

 
]

 
=

 
microtime

 
()

 
;

 
}

 
/

 
/

 
ustal

 
wskaźnik

 
tyknięcia

 
register_tick_function("profile")

 
;

 
/

 
/

 
zainicjowanie

 
funkcji

 
przed

 
blokiem

 
declare

 
profile

 
()

 
;

 
/

 
/

 
wykonaj

 
poniższy

 
kod

 
,

 
generując

 
tyknięcie

 
co

 
2

 
instrukcje

 
declare

 
(ticks=2

 
)

 
{

 
for

 
($x

 
=

 
1

 
;

 
$x

 
50

 
;

 
++$x

 
)

 
{

 
echo

 
similar_text

 
(md5($x)

 
,

 
md5($x*$x))

 
,

 
"

 
br

 
/

 
"

 
;

 
    }

 
}

 
/

 
/

 
Wyświetl

 
dane

 
przechowywane

 
w

 
profilerze

 
print_r

 
(profile

 
(TRUE))

 
;

 
?



Powyższy przykład profiluje kod PHP wewnątrz bloku "declare", zapisując czas wywołania co drugiej niskopoziomowej instrukcji w bloku instrukcji. Informację tę można wykorzystać do wykrycia fragmentów kodu wykonywanych w zbyt wolnym tempie. Problem wyszukania takich fragmentów można zrealizować na wiele sposobów, przy czym użycie tyknięć jest najwygodniesze i najłatwiejsze do zaimplementowania.

Tyknięcia doskonale przystosowane dla potrzeb debugowania , implementacji prostej wielozadaniowości , wykonywania operacji We / Wy w tle i wielu innych zadań .

Patrz także register_tick_function( ) i unregister_tick_function( ) .