declare
En esta página
declare#
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: ticks, encoding, strict_types
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í
?>
Ticks#
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 la sección directive del bloque 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 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#
La codificación de un script puede ser especificada por script utilizando la directiva encoding.
Declaración de una codificación para un script
<?php
declare(encoding='ISO-8859-1');
// el código
?>
[!CAUTION] 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.