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
?>

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.

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.