declare
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 :
declare (directive) commandes
L'expression directive permet de contr�ler l'intervention du bloc declare. Actuellement, seulement deux directives sont reconnues : la directive ticks (voir plus bas pour plus de d�tails sur les ticks) et la directive d'encodage encoding (Voir plus bas pour plus de d�tails sur la directive encoding).
Note: La directive encoding a �t� ajout�e en PHP 5.3.0.
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 (m�me si le fichier avec declare a �t� inclus apr�s, �a n'affecte pas le fichier parent).
<?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 tickables, ex�cut�es par l'analyseur dans le bloc de
declare. La valeur de N est sp�cifi�e
par la syntaxe ticks=N
dans le bloc de
directive declare.
Toutes les commandes ne sont pas tickables. Typiquement, les expressions de condition et les expressions d'arguments ne sont pas tickables.
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 #1 Exemple d'utilisation des ticks
<?php
declare(ticks=1);
// A function called on each tick event
function tick_handler()
{
echo "tick_handler() called\n";
}
register_tick_function('tick_handler');
$a = 1;
if ($a > 0) {
$a += 2;
print($a);
}
?>
Exemple #2 Exemple d'utilisation des ticks
<?php
function tick_handler()
{
echo "tick_handler() called\n";
}
$a = 1;
tick_handler();
if ($a > 0) {
$a += 2;
tick_handler();
print($a);
tick_handler();
}
tick_handler();
?>
Voir aussi register_tick_function() et unregister_tick_function().
L'encodage
L'encodage d'un script peut �tre sp�cifi� par script en utilisant la directive encoding.
Exemple #3 D�claration d'un encodage pour un script
<?php
declare(encoding='ISO-8859-1');
// le code
?>
Combin�e avec les espaces de nommage, la seule syntaxe valable pour declare est declare(encoding='...'); o� ... est la valeur de l'encodage. declare(encoding='...') {} soul�vera une erreur d'interpr�tation dans le cas des espaces de nommage.
La valeur d'encodage est ignor�e en PHP 5.3 � moins que PHP soit compil� avec --enable-zend-multibyte. En PHP 6.0, la directive encoding sera utilis�e pour dire au scanner dans quel encodage le fichier a �t� cr��. Les valeurs valables sont des noms d'encodage tels que UTF-8.