declare
(PHP 4, PHP 5, PHP 7, PHP 8)
Конструкция declare
используется для установки
директив исполнения для блока кода. Синтаксис declare
аналогичен с синтаксисом других конструкций управления выполнением:
Секция directive
позволяет установить поведение
блока declare
.
В настоящее время распознаются только три директивы:
директива ticks
(Дополнительная информация
о директиве ticks
доступна ниже), директива encoding
(Дополнительная информация
о директиве encoding
доступна ниже) и директива strict_types
(подробности в разделе про
строгую типизацию на странице аргументов функции)
Поскольку директивы обрабатываются при компиляции файла, то только символьные данные
могут использоваться как значения директивы. Нельзя использовать переменные и константы.
Пример:
Часть statement
блока declare
будет выполнена — как выполняется и какие побочные эффекты
возникают во время выполнения, может зависеть от директивы, которая установлена в
блоке directive
.
Конструкция declare
также может быть использована
в глобальной области видимости, влияя на весь следующий за ней код
(однако, если файл с declare
был включён, то она
не будет действовать на родительский файл).
Тики
Тик - это событие, которое случается каждые
N низкоуровневых операций, выполненных
парсером внутри блока declare
.
Значение N задаётся, используя
ticks=N
внутри
секции directive
блока declare
.
Не все выражения подсчитываются. Обычно, условные выражения
и выражения аргументов не подсчитываются.
Событие (или несколько событий), которое возникает на каждом тике
определяется, используя register_tick_function().
Смотрите пример ниже для дополнительной информации. Имейте в виду,
что для одного тика может возникать несколько событий.
Пример #1 Пример использования тика
<?php
declare(ticks=1);
// Функция, исполняемая при каждом тике
function tick_handler()
{
echo "Вызывается tick_handler()\n";
}
register_tick_function('tick_handler'); // вызывает событие тика
$a = 1; // вызывает событие тика
if ($a > 0) {
$a += 2; // вызывает событие тика
print $a; // вызывает событие тика
}
?>
Смотрите также register_tick_function() и
unregister_tick_function().
Кодировка
Кодировка скрипта может быть указана для каждого скрипта, используя директиву encoding
.
Пример #2 Определение кодировки для скрипта.
<?php
declare(encoding='ISO-8859-1');
// прочий код
?>
Предостережение
В сочетании с пространством имён единственно допустимый синтаксис
для declare является declare(encoding='...');
где
...
это значение кодировки. declare(encoding='...') {}
приведёт к ошибке парсера, если используется вместе с пространством имён.
Смотрите также zend.script_encoding.