PHP Handbuch
Zurück | Kapitel 16. Kontroll-Strukturen | Weiter

# 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 Direktive gibt Ihnen die Möglichkeit, das Verhalten des declare-Blocks zu bestimmen. Zur Zeit wird nur eine Direktive unterstützt: die ticks (Weiter unten finden Sie mehr Informationen zu den ticks).

Der Anweisungsteil 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.

Das declare Konstrukt kann auch im globalen Geltungsbereich benutzt werden und gilt dann für den folgenden Code.

`<?php // bewirkt das Gleiche: // sie können declare so benutzen: declare(ticks=1) { // hier folgt Ihr ganzes Skript } // oder wie hier: declare(ticks=1); // hier folgt Ihr ganzes Skript ?>`

## Ticks

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 16-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 identifizieren. 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().

Zurück | Zum Anfang | Weiter
switch | Nach oben | return