30

我对 PHP 函数有点困惑declare

究竟什么是单​​勾?我认为一个勾号等于一行代码?

但如果我使用:

function myfunc() {
        print "Tick";   
}

register_tick_function("myfunc");

declare(ticks=1) {
   echo 'foo!bar';
}

脚本打印:

“滴答”2次??

4

2 回答 2

24

每行都有一个勾号;和每个块 {} 试试看:

declare(ticks=1) echo 'foo!bar';

没有阻塞,没有额外的勾号。

declare(ticks=1) {{ echo 'foo!bar'; }}

更多无关块 = 更多滴答声。

PS:顺便说一下,蜱是非常奇特的功能,它们只在极少数情况下有用。它们不等同于线程或任何东西。如果对您而言,蜱是问题的解决方案,那么您应该在另一个问题中发布您的问题,因为它可能不是正确的解决方案。

于 2010-03-14T07:34:54.040 回答
17

关于什么是滴答声,您走在正确的轨道上。

http://www.tuxradar.com/practicalphp/4/21/0

简单地说,tick 是 PHP 每次执行一定数量的语句时在内部发生的一个特殊事件。这些语句是 PHP 内部的,大致对应于脚本中的语句。您可以使用 declare() 函数控制触发一个刻度需要多少语句,并且您可以使用 register_tick_function() 函数注册函数以在发生刻度时执行。如前所述,declare 的语法非常不寻常,所以请准备好接受冲击!

于 2010-03-14T07:34:16.910 回答