注册 登录

清河洛

php中的declare结构

qingheluo2021-01-30清河洛712
declare结构用来设定一段代码执行指令的行为可选的行为指令有三个:encoding="coding_str":为代码指定其编码方式需要在编译时指定--enable-zend-multibyte,否则declare中的encoding值会被忽略 strict_types=1|0:调用函数传值是否应用严格类型ticks=N:代码中解释器每执行N条可计时的低级语句就会触发的事件declare语句的格式有两个:declare(ticks=1) { // 这里写完整的运行代码 } 和 declare(ticks=1); // 这里写完整的运行代码 传入的指令是在文件编译时处理的,所以指...

declare结构用来设定一段代码执行指令的行为

可选的行为指令有三个:

encoding="coding_str":为代码指定其编码方式

需要在编译时指定--enable-zend-multibyte,否则declare中的encoding值会被忽略

strict_types=1|0:调用函数传值是否应用严格类型

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\";
}
// 注册事件函数
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();


网址导航