(PHP 4, PHP 5, PHP 7, PHP 8)
El elemento de lenguaje declare
se utiliza para añadir directivas de ejecución en un bloque de código. La sintaxis de
declare
es similar a la sintaxis de otras funciones de control:
declare (directive) comandos
La expresión directive
permite controlar la intervención del bloque declare
.
Actualmente, solo tres directivas son reconocidas:
Como las directivas son gestionadas durante la compilación del fichero, solo los literales pueden ser utilizados como valor de estas directivas. Las variables y constantes no pueden ser utilizadas. Para ilustrar:
<?php
// Esto es correcto:
declare(ticks=1);
// Esto es incorrecto:
const TICK_VALUE = 1;
declare(ticks=TICK_VALUE);
?>
La expresión comandos
del bloque de
declare
será ejecutada. Cómo será ejecutada,
y qué efectos tendrá, depende de la directiva utilizada en el bloque
directive
.
La estructura declare
puede también ser utilizada
en el contexto global. Afecta entonces a todo el código que la
sigue (incluso si el fichero con declare
ha sido
incluido después, no afecta al fichero padre).
<?php
// Estas declaraciones son idénticas.
// Se puede utilizar esto
declare(ticks=1) {
// script entero aquí
}
// o esto
declare(ticks=1);
// script entero aquí
?>
Un tick es un evento que interviene cada N
comandos de bajo nivel tickables, ejecutados por el analizador en el bloque de
declare
. El valor de N es especificado
por la sintaxis ticks=N
en el bloque de
directiva declare
.
No todos los comandos son tickables. Típicamente, las expresiones de condición y las expresiones de argumentos no son tickables.
Un evento que interviene en cada tick es especificado con la función register_tick_function(). Consulte el ejemplo a continuación para más detalles. Tenga en cuenta que más de un evento puede intervenir por tick.
Ejemplo #1 Ejemplo de uso de ticks
<?php
declare(ticks=1);
// Una función llamada en cada evento tick
function tick_handler()
{
echo "tick_handler() llamado\n";
}
register_tick_function('tick_handler'); // causa un evento tick
$a = 1; // causa un evento tick
if ($a > 0) {
$a += 2; // causa un evento tick
print $a; // causa un evento tick
}
?>
Ver también register_tick_function() y unregister_tick_function().
La codificación de un script puede ser especificada por script utilizando la
directiva encoding
.
Ejemplo #2 Declaración de una codificación para un script
<?php
declare(encoding='ISO-8859-1');
// el código
?>
Combinada con los espacios de nombres, la única sintaxis válida para declare
es declare(encoding='...');
donde ...
es el valor de la codificación. declare(encoding='...') {}
generará un error de interpretación en el caso de los espacios de nombres.
Ver también zend.script_encoding.