Эта declareконструкция используется для установки директив выполнения для блока кода. Синтаксис declareаналогичен синтаксису других конструкций управления потоком:
declare (directive)
statement
Раздел позволяет задать directiveповедение блока. declareВ настоящее время распознаются только три директивы: ticksдиректива (см. ниже дополнительную информацию о директиве ticks ), encodingдиректива (см. ниже дополнительную информацию о директиве кодирования ) и strict_typesдирективу (см. дополнительную информацию в разделе строгой типизации в объявлениях типов). страница)
Поскольку директивы обрабатываются во время компиляции файла, в качестве значений директив могут быть указаны только литералы. Нельзя использовать переменные и константы. Проиллюстрировать:
<?php
// This is valid:
declare(ticks=1);
// This is invalid:
const TICK_VALUE = 1;
declare(ticks=TICK_VALUE);
?>Часть statementблока declareбудет выполняться — как она выполняется и какие побочные эффекты возникают во время выполнения, может зависеть от директивы, установленной в directiveблоке.
Конструкцию declareтакже можно использовать в глобальной области видимости, влияя на весь следующий за ней код (однако, если файл с declareбыл включен, то он не влияет на родительский файл).
<?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
Тик — это событие, которое происходит для каждых N низкоуровневых тиковых операторов, выполняемых синтаксическим анализатором в declareблоке. Значение для N указывается с помощью в разделе блока . ticks=Ndeclaredirective
Не все утверждения можно поставить галочку. Как правило, выражения условий и выражения аргументов не могут быть отмечены.
События, которые происходят на каждом тике, указываются с помощью register_tick_function() . Подробнее см. пример ниже. Обратите внимание, что для каждого тика может произойти более одного события.
Пример #1 Пример использования галочки
<?php
declare(ticks=1);
// A function called on each tick event
function tick_handler()
{
echo "tick_handler() called\n";
}
register_tick_function('tick_handler'); // causes a tick event
$a = 1; // causes a tick event
if ($a > 0) {
$a += 2; // causes a tick event
print($a); // causes a tick event
}
?>См. также register_tick_function() и unregister_tick_function() .
Кодирование
Кодировку скрипта можно указать для каждого скрипта с помощью encodingдирективы.
Пример #2 Объявление кодировки для скрипта.
<?php
declare(encoding='ISO-8859-1');
// code here
?>Осторожность
В сочетании с пространствами имен единственный допустимый синтаксис для объявления —
declare(encoding='...');это...значение кодировки.declare(encoding='...') {}приведет к ошибке синтаксического анализа в сочетании с пространствами имен.
0 комментариев