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:
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)
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:
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).
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
register_tick_function(). Ver el ejemplo
abajo para más detalles. Tener en cuenta que más de un evento puede
ocurrir por cada tick.
Ejemplo #1 Ejemplo de uso del tick
<?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');
$a = 1;
if ($a > 0) {
$a += 2;
print($a);
}
?>
Ejemplo #2 Ejemplo de uso de ticks
<?php
function tick_handler()
{
echo "tick_handler() llamado\n";
}
$a = 1;
tick_handler();
if ($a > 0) {
$a += 2;
tick_handler();
print($a);
tick_handler();
}
tick_handler();
?>
Véase también register_tick_function() y
unregister_tick_function().
Encoding
Una codificación de script puede ser especificada para cada script usando la directiva encoding
.
Ejemplo #3 Declarando un encoding para el script
<?php
declare(encoding='ISO-8859-1');
// código aquí
?>
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 phpinfo().
Ver también zend.script_encoding.