Эта 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 комментариев