declare

PHP Handbuch
Zurück | Kapitel 12. Kontroll-Strukturen | Nach vorne

# `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` 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().

Zurück | Zum Anfang | Nach vorne
`switch` | Nach oben | return