declare

Manuel PHP
Précédent | Chapitre 11. Les structures de contrôle | Suivant

# `declare`

L'élément de langage `declare` sert à ajouter des directives d'éxécutions dans un bloc de code. La syntaxe de `declare` est similaire à la syntaxe des autres fonctions de contrôle :

    <?php
      declare (directive) statement
    ?>

L'expression `directive` permet de contrôler l'intervention du bloc `declare`. Actuellement, une seule directive est reconnue : la directive `ticks` (Voir plus bas pour plus de détails) sur les ticks).

L'expression `statement` du bloc de `declare` sera exécutée. Comment elle sera exécutée, et quels effets cela aura dépend de la directive utilisée dans le bloc `directive`.

## Ticks

Un tick est un événement qui intervient toutes les `N` commandes bas niveau, exécutées par l'analyseur dans le bloc de `declare`. La valeur de `N` est spécifiée avec la syntaxe `ticks=`N`` dans le bloc de directive `declare`.

Un événement qui intervient à chaque tick est spécifié avec la fonction register_tick_function(). Reportez vous à l'exemple ci-dessous pour plus de détails. Notez que plus d'un événement peut intervenir par tick.

    <PRE>
    <?php
    // Un fonction qui enregistre l'heure à laquelle elle est appelée
      function profile($dump = FALSE){
        static $profile;
        // Retourne les horaires stockés dans le profile, et l'efface
        if ($dump) {
            $temp = $profile;
            unset ($profile);
            return ($temp);
        }
        $profile[] = microtime ();
      }
    // Enregistre un gestionnaire de tick
      register_tick_function("profile");
    // Initialise la fonction avant le bloc de déclaration
      profile();
    // Exécute un bloc de code, et appele un tick toutes les deux secondes
      declare (ticks=2) {
        for ($x = 1; $x < 50; ++$x) {
            echo similar_text(md5($x), md5($x*$x)), "<br>";
        }
      }
    ?>

Pour voir le résultat :

    <?php
    // Affiche les données de la variable $profile
      print_r(profile(TRUE));
    ?>
    </pre>

Cet exemple profile le code PHP dans le bloc de déclaration, et enregistre l'heure de chaque commande bas niveau. Cette information peut être réutilisée pour débusquer les segments de code lents. Vous pouvez implémenter d'autres méthodes, mais les ticks sont plus rapides et plus efficaces.

Les ticks sont bien pratiques pour débugger, implémenter un multi-tâches simple, des entrées sorties en tâche de fond, ou bien d'autres choses, avec PHP.

Voir aussi register_tick_function() et unregister_tick_function().

Précédent | Sommaire | Suivant
`switch` | Niveau supérieur | require()