Documentación offline PHP master

declare

master Ver versión oficial en línea Licencia CC-BY-3.0Descargado el 2026-08-02

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.