declare

Das Sprachkonstrukt declare Das Sprachkonstrukt declare wird dazu verwendet , um Ausführungsdirektiven für einen Codeblock anzugeben . Die Schreibweise von declare ist der anderer Kontrollstrukturen ähnlich :

 
declare

 
(

 
Direktive

 
)

 
Anweisung





Die Directive gibt Ihnen die Möglichkeit , das Verhalten des declare -Blocks zu bestimmen . Zur Zeit wird nur eine Direktive erkannt : die ticks ( Weiter unten finden Sie mehr Informationen zu den ticks ) .

Der Anweisung steil des declare -Blocks wird ausgeführt - wie genau diese Ausführung passiert und welche Nebeneffekte während der Ausführung auftreten , hängt von der Direktive ab , die Sie im directive -Block angegeben haben .

Ticks

Ein tick ist ein Ereigniss , das bei jedem N -ten Autreten der low-level Anweisungen innerhalb des declare Ein tick ist ein Ereigniss , das bei jedem N -ten Autreten der low-level Anweisungen innerhalb des declare Blocks , die vom Parser ausgeführt werden , auftritt . Der Wert von N wird durch die Angabe von ticks= N innerhalb des declare -Blocks in dem directive Abschnitt bestimmt .

Das Ereignis / die Ereignisse , die bei jedem tick eintreten , legen Sie mit der Funktion register_tick_function( ) fest . Weitere Einzelheiten können Sie dem Beispiel unten entnehmen . Beachten Sie , dass mehr als ein Ereigniss für jeden tick eintreten kann .

Beispiel 12-1 . Profil eines Bereichs von PHP Code

 
?php

 
/

 
/

 
Funktion

 
,

 
die

 
bei

 
Aufruf

 
die

 
Zeit

 
aufzeichnet

 
function

 
profile

 
(

 
$dump

 
=

 
FALSE

 
)

 
{

 
static

 
$profile

 
;

 
/

 
/

 
Rückgabe

 
der

 
gespeicherten

 
Zeit

 
aus

 
profile

 
,

 
danach

 
löschen

 
if

 
($dump

 
)

 
{

 
$temp

 
=

 
$profile

 
;

 
unset

 
($profile)

 
;

 
return

 
($temp)

 
;

 
    }

 
$profile[

 
]

 
=

 
microtime

 
()

 
;

 
}

 
/

 
/

 
Einen

 
tick

 
handler

 
bestimmen

 
register_tick_function("profile")

 
;

 
/

 
/

 
Funktion

 
vor

 
dem

 
declare-Block

 
initialisieren

 
profile

 
()

 
;

 
/

 
/

 
Ausführen

 
eines

 
Code-Blocks

 
,

 
jede

 
2te

 
Anweisung

 
löst

 
einen

 
tick

 
aus

 
declare

 
(ticks=2

 
)

 
{

 
for

 
($x

 
=

 
1

 
;

 
$x

 
50

 
;

 
++$x

 
)

 
{

 
echo

 
similar_text

 
(md5($x)

 
,

 
md5($x*$x))

 
,

 
"

 
br

 
/

 
;"

 
;

 
    }

 
}

 
/

 
/

 
Ausgabe

 
der

 
gespeicherten

 
Daten

 
aus

 
dem

 
Profiler

 
print_r

 
(profile

 
(TRUE))

 
;

 
?



Dieses Beispiel 'profiliert' den PHP Code der im 'declare'-Block steht, indem die Zeit festgehalten wird, zu der jede zweite low-level Anweisung im Codeblock ausgeführt wird. Diese Information können Sie dazu benutzen, langsame Bereiche innerhalb bestimmter Codesegmente zu idebtifizieren. Das gleiche Ziel können Sie auch mit anderen Methoden erreichen: die Benutzung von ticks ist bequemer und einfacher zu implementieren.

Ticks sind gut für Debugging , einfaches Multitasking , Hintergrund I / O und viele andere Aufgaben geeignet .

Siehe auch register_tick_function( ) und unregister_tick_function( ) .