介绍

PHP中的clarify语句语法类似于其他流控制结构,例如while,for,foreach等。

语法

declare (directive) {    statement1;    statement2;    . . }

块的行为由指令类型定义。三种类型的指令可以在声明语句来提供-编码strict_types指令。

刻度指令

勾号是一种特殊事件的名称,该特殊事件发生在脚本中一定数量的语句被执行时。这些语句在PHP内部,与脚本中的语句(不包括条件和参数表达式)大致相同。任何函数都可以通过 register_tick_function与tick事件相关联。已注册的函数将在声明指令中指定的滴答数后执行。

在以下示例中,myfunction()每次在声明构造中的循环完成5次迭代时都执行一次。

示例

<?php function myfunction(){    echo "Hello World\n"; } register_tick_function("myfunction"); declare (ticks=5){    for ($i=1; $i<=10; $i++){       echo $i."\n";    } } ?>

输出结果

从命令行运行上述脚本时,将产生以下结果:

1 2 3 4 5 Hello World 6 7 8 9 10 Hello World

PHP还具有unregister_tick_function()来删除函数与tick事件的关联

strict_types指令

PHP是一种弱类型语言,它试图转换数据类型以适合于执行某些操作。如果有一个带有两个整数参数的函数并返回它们的加法,并且调用时任一参数都以float形式给出,则PHP解析器将自动将float转换为整数。如果不需要强制,我们可以在声明构造中指定strict_types = 1

示例

<?php //默认情况下strict_types为0- function myfunction(int $x, int $y){    return $x+$y; } echo "total=" . myfunction(1.99, 2.99); ?>

浮点参数被强制为整数以执行加法运算以得到以下结果-

输出结果

total=3

但是,将delcare构造与strict_types = 1一起使用可防止强制

示例

<?php declare (strict_types=1); function myfunction(int $x, int $y){    return $x+$y; } echo "total=" . myfunction(1.99, 2.99); ?>

输出结果

这将产生以下错误-

Fatal error: Uncaught TypeError: Argument 1 passed to myfunction() must be of the type integer, float given, called in line 7 and defined in C:\xampp\php\testscript.php:3

编码指令

声明结构具有Encoding指令,可以使用该指令指定脚本的编码方案

示例

<?php declare(encoding='ISO-8859-1'); echo "This Script uses ISO-8859-1 encoding scheme"; ?>