declare结构用来设定一段代码执行指令的行为
可选的行为指令有三个:
encoding="coding_str":为代码指定其编码方式
strict_types=1|0:调用函数传值是否应用严格类型,需要在编译时指定--enable-zend-multibyte,否则declare中的encoding值会被忽略
ticks=N:代码中解释器每执行N条可计时的低级语句就会触发的事件
declare语句的格式有两个:
declare(ticks=1) {
// 这里写完整的运行代码
}
和
declare(ticks=1);
// 这里写完整的运行代码
传入的指令是在文件编译时处理的,所以指令只接受字面量的值,无法使用变量和常量
// 这样是有效的
declare(ticks=1);
// 这样是无效的:
const TICK_VALUE = 1;
declare(ticks=TICK_VALUE);
ticks指令
不是所有语句都可计时。通常条件表达式和参数表达式都不可计时。
在每个tick中出现的事件由register_tick_function()来指定由unregister_tick_function()来取消
declare(ticks=1);
// 定义事件函数
function tick_handler(){
echo "tick_handler() called\n";
}
// 注册事件函数
register_tick_function('tick_handler');
$a = 1;
if ($a > 0) {
$a += 2;
print($a);
}
注册事件函数之后的代码等同于
$a = 1;
tick_handler();
if ($a > 0) {
$a += 2;
tick_handler();
print($a);
tick_handler();
}
tick_handler();
最后编辑:2021-01-31作者:qingheluo
这个作者貌似有点懒,什么都没有留下。