PHP声明语句
介绍
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"; ?>