L'élément
de langage declare sert à ajouter
des directives d'exécutions
dans un bloc de code. La syntaxe de
declare est similaire à la
syntaxe des autres fonctions de contrôle
:
Exemple - Instruction directive
declare (directive)
commandes
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 commandes 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.
La structure declare peut aussi être
utilisée dans le contexte global.
Elle affecte alors tout le code qui
la suit :
Exemple - Instruction directive
en contexte global
<?php
// Ces déclaration sont identiques.
// Vous pouvez utiliser ceci
declare(ticks=1) {
// script entier ici
}
// ou ceci
declare(ticks=1);
// script entier ici
?>
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.
Exemple - Profiler une section
de code PHP
<?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 />";
}
}
// Affiche les données de la
variable $profile
print_r(profile(TRUE));
?>
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éboguer, 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().
Copyright © 2001-2006 The
PHP Group. All rights reserved.
|