Я знаю, что клещей в PHP, но, глядя на выходе следующего кода:PHP недопонимание количества тикающих высказываний с использованием PHP-тиков?
<?php
function myfunc() {
static $n = 1;
print "$n) Tick<br>";
$n++;
}
register_tick_function("myfunc");
declare(ticks=1);
echo 'echo<br>';
Выход:
1) Tick
2) Tick
echo
3) Tick
Он говорит мне, что зарегистрированный клещ функция «MyFunc» является исполнено 3 раза. Но на основании этого ответа ->PHP using Declare ? What is a tick?:
Вы получаете галочку для каждой строки; и каждый блок {}
Не должно быть:
1) Tick
echo
2) Tick
? Поскольку существует только два заявления:
declare(ticks=1);<-- Statement 1
echo 'echo<br>';<-- Statement 2
Почему 3 ??? Если я удалю ";" от declare
, как это:
declare(ticks=1)
echo 'echo<br>';
я получаю только одно исполнения зарегистрированной функции клеща:
echo
1) Tick
Так что это определенно правило для подсчета tickable заявления для того, чтобы понять, сколько раз выполняется зарегистрированная функция тика? (Я спрашиваю, потому что в этом примере, и потому, что PHP руководство фактически не распространяется на эту тему на счетных tickable статистике)
EDIT: Другое странное поведение на мой взгляд, заключается в следующем:
<?php
function myfunc()
{
static $n = 1;
print "$n) Tick<br>";
$n++;
}
register_tick_function("myfunc");
declare(ticks = 1)
echo 'Start<br>';
echo 'echo<br>';
, который выводит:
Start
1) Tick
echo
функция клеща выполняется один раз, но утверждения по крайней мере 2 (если не считать «конец сценария», как @Marc Б указал)
есть также неявный тик «конца скрипта», который является своего рода сортировкой, как '}'. –
Все, что должно иметь смысл, но тогда, если у меня есть 'declare (ticks = 1) echo 'echo
';' Я получаю только функцию обработчика меток, выполняемую только один раз (для оператора 'echo'), а не для «конец скрипта»? – tonix
Я думаю, что 'declare echo;' - это один оператор, так как нет ';', поэтому включение тика не начнется до тех пор, пока ПОСЛЕ завершения инструкции (после выполнения эха) get - это конец скрипта, а не галочка от эха. –