宜信同城网交流论坛

 找回密码
 立即注册
开启左侧

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

[复制链接]
发表于 2023-2-16 18:54:50 | 显示全部楼层 |阅读模式 来自 LAN

(PHP 4, PHP 5, PHP 7, PHP 8)

declare 结构用来设定一段代码的执行指令。declare 的语法和其它流程控制结构相似:

declare (directive)
    statement

directive 部分允许设定 declare 代码段的行为。目前只认识三个指令:ticks(更多信息见下面 ticks 指令)、 encoding(更多信息见下面 encoding 指令)、 strict_types 指令 (更多信息见类型声明页面 严格类型 章节)。

因为本指令是在文件编译时处理的,所以指令只接受字面量的值。 无法使用变量和常量。下面为你演示:

// 这样是有效的:
declare(ticks=1);

// 这样是无效的:
const TICK_VALUE = 1;
declare(ticks=TICK_VALUE);
?>

declare 代码段中的 statement 部分将被执行——怎样执行以及执行中有什么副作用出现取决于 directive 中设定的指令。

declare 结构也可用于全局范围,影响到其后的所有代码(但如果有 declare 结构的文件被其它文件包含,则对包含它的父文件不起作用)。

// 两者相等:

// 可以这样用:
declare(ticks=1) {
    // 这里写完整的脚本
}

// 也可以这样用:
declare(ticks=1);
// 这里写完整的脚本
?>

Ticks

Tick(时钟周期)是一个在 declare 代码段中解释器每执行 N 条可计时的低级语句就会发生的事件。N 的值是在 declare 中的 directive 部分用 ticks=N 来指定的。

不是所有语句都可计时。通常条件表达式和参数表达式都不可计时。

在每个 tick 中出现的事件是由 register_tick_function() 来指定的。更多细节见下面的例子。注意每个 tick 中可以出现多个事件。

示例 #1 Tick 的用法示例


declare(ticks=1);

// 每次 tick 事件都会调用该函数
function tick_handler()
{
    echo "tick_handler() called\n";
}

register_tick_function('tick_handler'); // 引起 tick 事件

$a = 1; // 引起 tick 事件

if ($a > 0) {
    $a += 2; // 引起 tick 事件
    print($a); // 引起 tick 事件
}

?>

参见 register_tick_function() 和 unregister_tick_function()

Encoding

可以用 encoding 指令来对每段脚本指定其编码方式。

示例 #2 对脚本指定编码方式

declare(encoding='ISO-8859-1');
// 在这里写代码
?>

警告

当和命名空间结合起来时 declare 的唯一合法语法是 declare(encoding='...');,其中 ... 是编码的值。而 declare(encoding='...') {} 将在与命名空间结合时产生解析错误。

宜信网交流论坛 - 版权声明 1、在发表言论时,请遵守当地法律法规。主题所有言论纯属个人意见,与本站立场无关。
2、本站所有主题由作者发表,作者享有帖子相关版权,其他单位或个人使用、转载或引用本文时必须征得作者同意并注明来源于宜信网
3、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意。
4、帖子不遵守当地法律法规、广告、人身攻击等情况时,宜信网管理人员有权不事先通知发贴者而删除本文。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|宜信同城网交流论坛 ( 闽ICP备19021048号 )|站点地图

GMT+8, 2026-3-28 03:19 , Processed in 0.224909 second(s), 12 queries , Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表