declare
(PHP 4, PHP 5)
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 :
<?php
// Ces déclarations 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.
Notez que PHP ne vous renseignera sur l'activation ou non de --enable-zend-multibyte qu'au moyen de phpinfo().
Voir aussi zend.script_encoding.
