declare
(PHP 4, PHP 5, PHP 7, PHP 8)
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 :
L'expression directive
permet de contrôler l'intervention
du bloc declare
.
Actuellement, seulement trois directives sont reconnues :
Comme les directives sont gérées lors de la compilation du fichier, seulement
les littéraux peuvent être utilisés comme valeur de ces directives. Les variables
et constantes ne peuvent pas être utilisées. Pour illustrer :
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).
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'); // causes a tick event
$a = 1; // causes a tick event
if ($a > 0) {
$a += 2; // causes a tick event
print $a; // causes a tick event
}
?>
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 #2 Déclaration d'un encodage pour un script
<?php
declare(encoding='ISO-8859-1');
// le code
?>
Attention
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.
Voir aussi
zend.script_encoding.