Estruturas de Controle
PHP Manual

declare

(PHP 4, PHP 5)

A instrução declare é usado para definir diretivas de execução para um bloco de código. A sintaxe do declare é similar à sintaxe de outras estruturas de controle de fluxo:

declare (directive)
    statement

A seção directive permite que o comportamento do bloco do declare seja definido. Atualmente duas 'directive' são reconhecidas: a 'directive' ticks (Veja abaixo para mais informações da 'directive' ticks ) e a 'directive' encoding (Veja abaixo para mais informações da 'directive' encoding ).

Nota: A 'directive' encoding foi adicionada no PHP 5.3.0

Como as 'directives' são tratadas enquanto o arquivo é compilado, somente literais podem ser usadas como valores de 'directives'. Variáveis e constantes não podem ser usadas. Para ilustrar:

<?php
// Isto é válido:
declare(ticks=1);

// isto é inválido:
const TICK_VALUE 1;
declare(
ticks=TICK_VALUE);
?>

O statement que faz parte do bloco do declare será executado - como ele é executado e quais os efeitos secundários que ocorrem durante a execução depende da diretiva definida no bloco directive.

O construtor do declare também pode ser usado no escopo global, afetando todo o código que o segue (entretanto se o arquivo com o declare for incluido ele não afeta o arquivo principal).

<?php
// these are the same:

// you can use this:
declare(ticks=1) {
    
// entire script here
}

// or you can use this:
declare(ticks=1);
// entire script here
?>

Ticks

Um 'tick' é um evento que ocorre para cada N declarações de baixo nível executadas pelo interpretador dentro do bloco declare. O valor de N é especificado usando ticks=N dentro do bloco declare da seção directive.

Nem todas declarações são passiveis de executar um 'tick'. Normalmente, expressões de condições e argumentos de expressões não são.

O(s) evento(s) que serão executados em cada 'tick' são especificados usando a função register_tick_function(). Veja o exemplo abaixo para mais detalhes. Note que mais de um evento pode ser executado para cada 'tick'.

Exemplo #1 Tick usage example

<?php

declare(ticks=1);

// A function called on each tick event
function tick_handler()
{
    echo 
"tick_handler() called\n";
}

register_tick_function('tick_handler');

$a 1;

if (
$a 0) {
    
$a += 2;
    print(
$a);
}

?>

Exemplo #2 Exemplos de uso de 'Ticks'

<?php

function tick_handler()
{
  echo 
"tick_handler() called\n";
}

$a 1;
tick_handler();

if (
$a 0) {
    
$a += 2;
    
tick_handler();
    print(
$a);
    
tick_handler();
}
tick_handler();

?>

Veja mais sobre register_tick_function() e unregister_tick_function().

Encoding

O encoding de um código pode ser definido no script usando a 'directive' encoding.

Exemplo #3 Declarando um encoding para o script.

<?php
declare(encoding='ISO-8859-1');
// code here
?>

Cuidado

Quando usada com namespaces, a única sintaxe válida para declarar é declare(encoding='...'); onde ... é o valor do encoding. declare(encoding='...') {} irá resultar em um erro de sintaxe quando usada com namespaces.

A declarão de encoding é ignorada no PHP 5.3 exceto seo o PHP for compilado com --enable-zend-multibyte.

Note que o PHP não mostra se --enable-zend-multibyte foi usada para compilar com exceção da utilização do phpinfo().

Veja mais zend.script_encoding.


Estruturas de Controle
PHP Manual