array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'pt_BR', ), 'this' => array ( 0 => 'control-structures.declare.php', 1 => 'declare', ), 'up' => array ( 0 => 'language.control-structures.php', 1 => 'Estruturas de Controle', ), 'prev' => array ( 0 => 'control-structures.match.php', 1 => 'match', ), 'next' => array ( 0 => 'function.return.php', 1 => 'return', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'pt_BR', 'path' => 'language/control-structures/declare.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
(PHP 4, PHP 5, PHP 7, PHP 8)
A instrução declare
é usada
para definir diretivas de execução para um bloco de código.
A sintaxe do declare
é similar à
sintaxe de outros construtos de controle de fluxo:
declare (directive) statement
A seção directive
permite que
o comportamento do bloco do declare
seja
definido.
Atualmente três diretivas são reconhecidas: a diretiva
ticks
(Veja abaixo para mais
informações da diretiva
ticks),
a diretiva encoding
(Veja abaixo para mais
informações da diretiva
encoding)
e a diretiva strict_types
(Veja abaixo para mais
informações na seção
strict
sobre argumentos de função).
As diretivas são manipuladas na compilação do arquivo, somente literais podem ser usadas como valores da diretiva. 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);
?>
A parte statement
do bloco do
declare
será executada - como
é executada e quais os efeitos colaterais 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 incluído, não afetará o
arquivo principal).
<?php
// Os exemplos abaixo tem o mesmo efeito
// Pode ser usado assim:
declare(ticks=1) {
// script aqui
}
// ou assim:
declare(ticks=1);
// script inteiro aqui
?>
Um 'tick' é um evento que ocorre a 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 passíveis de executar um 'tick'. Normalmente, expressões de condições e argumentos de expressões não são.
Os eventos que serão executados a 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 Exemplo de uso do Tick
<?php
declare(ticks=1);
// A função a ser chamada em cada evento tick
function tick_handler()
{
echo "tick_handler() chamada.\n";
}
register_tick_function('tick_handler'); // Causa um evento tick
$a = 1; // Causa um evento tick
if ($a > 0) {
$a += 2; // Causa um evento tick
print $a; // Causa um evento tick
}
?>
See also register_tick_function() and unregister_tick_function().
O encoding de um script pode ser especificado em cada arquivo com uma diretiva encoding
.
Exemplo #2 Declarando o encoding do script.
<?php
declare(encoding='ISO-8859-1');
// código aqui
?>
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.
Veja mais zend.script_encoding.