1. PHP7参数机制的变化
1.1 Argument unpacking
在PHP5中,使用可变变量可以将一个数组的元素变成独立的变量,例如:
$array = array('a', 'b', 'c');
list($var1, $var2, $var3) = $array;
在PHP7中,新增了argument unpacking特性,可以直接使用...运算符将一个数组展开,将元素变成独立的参数。
$array = array('a', 'b', 'c');
function test($var1, $var2, $var3) {
echo $var1 . $var2 . $var3;
}
test(...$array); //输出abc
1.2 类型提示
PHP7加入了函数参数和返回值的强类型限制,可以通过类型提示来实现。如果函数的参数或返回值不符合指定类型,会抛出错误。
function test(int $a, string $b) {
//函数体
}
1.3 Null coalescing operator
PHP7中新增了null合并运算符???,如果一个变量为null,则返回指定的默认值。这个运算符只能处理两个值,如果第一个值不为null,则返回第一个值。
$value = $a ?? $b;
1.4 Spaceship operator
PHP7中还增加了一个新的操作符:<=>,也被称为“spaceship operator”,主要用于比较两个值的大小,并返回1、0或-1。
echo 1 <=> 1; //输出0
echo 1 <=> 2; //输出-1
echo 2 <=> 1; //输出1
2. PHP7整形和字符串处理机制的修改
2.1 整形处理机制的修改
在PHP5中,整型值在内部以长整型和短整型两种方式存储。在PHP7中,整型只有一种类型,即signed long(有符号长整型),默认为64位。这种变化增加了处理远大于32位数值的能力。
2.2 字符串处理机制的修改
在PHP5中,字符串处理采用了两种类型,即ASCII和UCS-2两种。在PHP7中,全部采用了UTF-8编码。这样可以使得字母和数字能够正确编码,同时还可以使得某些特殊字符不会被统一编码误判。同时,由于UTF-8编码是一种变长编码方式,可以有效减小占用存储空间的大小。
2.3 字符串函数mbstring增强
mbstring是PHP的一个扩展模块,提供了更加全面而又稳定的多字节支持。PHP7中增强了mbstring函数的支持能力,提高了处理中文字符等多字节字符的能力,同时对于一些函数的使用方法也做了一些优化。
以上就是PHP7参数、整形及字符串处理机制修改的一些实例分析。