declare
(PHP 4, PHP 5, PHP 7, PHP 8)
El constructor declare es usado para
fijar directivas de ejecución para un bloque de código.
La sintaxis de declare es similar a
la sintaxis de otros constructores de control de flujo:
declare (directive)
statement
La sección directive permite que el
comportamiento de declare sea
configurado.
Actualmente, solamente están reconocidas tres directivas:
ticks (véase abajo para más
información sobre la directiva
ticks),
encoding (véase abajo para más
información sobre la directiva
encoding)
y strict_types (para más infomación,
véase la sección
strict
de la página de Argumentos de funciones)
Versión
Descripción
7.0.0
Se añadió la directiva strict_types
5.3.0
Se añadió la directiva encoding
Ya que las directivas se manejan mientras el fichero está siendo compilado, solamente se pueden
proporcionar literales como valores de directivas. No se pueden emplear variables ni constantes.
Como ejemplo:
declare(ticks=TICK_VALUE);?>
La parte statement del
bloque declare será ejecutada - como
se ejecuta y que efectos secundarios ocurran durante la ejecución
puede depender de la directiva fijada en el
bloque directive.
El constructor declare también se puede utilizar en el alcance
global, afectando a todo el código que le sigue (sin embargo, si el archivo con el
declare fue incluido entonces no afectará al archivo
padre).
// se puede usar ésto:declare(ticks=1) {// script entero aquí}// o se puede usar ésto:declare(ticks=1);// script entero aquí?>
Ticks
Un tick es un evento que ocurre para cada
sentencia tickable N de bajo nivel ejecutada
por el intérprete dentro del bloque declare.
El valor para N se especifica
usando ticks=N
dentro del bloque de declare
de la sección directive.
No todas las sentencias son tickable. Por lo general, expresiones
de condición y expresiones de argumento no son tickables.
Los eventos que ocurren en cada tick se especifican mediante la
Ejemplo #1 Ejemplo de uso del tick
{
echo"tick_handler() llamado\n";
}register_tick_function('tick_handler');$a=1;
if ($a>0) {$a+=2;
print($a);
}?>
Ejemplo #2 Ejemplo de uso de ticks
{
echo"tick_handler() llamado\n";
}$a=1;tick_handler();
if ($a>0) {$a+=2;tick_handler();
print($a);tick_handler();
}tick_handler();?>
Encoding
Una codificación de script puede ser especificada para cada script usando la directiva encoding.
Ejemplo #3 Declarando un encoding para el script
Precaución
Cuando se combina con espacios de nombres, la única sintaxis legal para declarar
es declare(encoding='...'); donde ...
es el valor del encoding. declare(encoding='...') {}
resultará en un error de análisis cuando se combina con espacios de nombres.
El valor declarado de encoding es ignorado en PHP 5.3 a menos que php esté compilado con
--enable-zend-multibyte.
Tener en cuenta que PHP no expone si --enable-zend-multibyte fue
utilizado para compilar PHP que no sea por