PHP7.1的新特性概述

一、空型

null类型主要用于参数类型声明和函数返回值声明。

这两种主要形式如下:


< PHP
函数应答():int {
返回null;
}

函数应答():int {
返回42;
}

函数表示(字符串MSG){
如果($){
回应$ MSG;
}
}


从示例中很容易理解,这意味着函数或返回值的类型是指定类型或null。

该方法也可用于接口函数的定义。


< PHP
接口fooable {
函数foo(fooable $);
}


但是需要注意的是:如果函数本身定义了一个参数类型,并且没有默认值,那么即使它是空的,也不能省略它,否则会触发错误:


< PHP
功能foo_nullable(酒吧美元吧){ }

foo_nullable(新巴); / /可行
foo_nullable(空); / /可行
(foo_nullable); / /不可行


但如果上述函数的参数定义为酒吧酒吧= null,然后美元,第三种方法也是可行的。因为= null实际上相当于为参数的类型和可空,空可设置默认值。

二,列表的方括号

我们知道只有通过阵列php5.4()来定义数组中的5.4个,增加一个简化的方式{ }后(略5字还是很真实)。


< PHP
5.4前/前
数组=(1, 2, 3);
数组=()= 1,b = 2,C = 3);

5.4和以后
$数组{ { 1, 2, 3 };
$数组= 1


为了扩展到另一个问题,如果我们将数组的值赋给不同的变量,我们可以通过列表来完成:


< PHP
列表($ A,$ B,$ C)=数组;


它也可以通过{ - }实现吗


< PHP
{ $ A,$ B,$ $ } = $数组;


下一个特性中提到的列表指定键:


< PHP
{ $


php7.1实现这个功能。但应注意的是:在数组不是左值{}速记是列表(缩写)。

不仅如此,新的列表()的实现不仅可以出现在一个左值,也可以使用foreach循环:


< PHP
foreach($点= > X元{X
var_dump(X,Y元);
}


但是由于问题(列表)而不能使用嵌套{ }:


< PHP
/不合法
列表({ $,$ },{ $,$ })= { 1, 2 },{ 3, 4 } };

/不合法
{列表($ A,$ B),列表($,$ D)} { { 1, 2 },{ 3, 4 } };

/合法
{ $ A、$ }、{ $ C、$ } { { 1, 2 }、{ 3, 4 } };


三。允许键在列表中指定

如上所述,可以在新列表()的实现中指定密钥:


< PHP
$数组= 1
{ $


这是一样的:


< PHP
$ a数组{'a' };
$ =数组{ B };
$ C = C数组{ };


过去的区别是,前一个列表()的实现相当于该键只能是0, 1, 2、3,不能调整顺序:


< PHP
列表($,$)= { 1 = 1,2} = 2;


PHP错误的错误:未定义偏移量:0…

新的实现可以通过以下方式进行调整:


< PHP
列表($ = 1,B = 2美元)= { 1=>1,2} > 2;


与数组不同,列表不支持混合形式的键,下面的方法触发解析错误:


< PHP
错误:语法错误,…
列表($未加密,密钥= $键=数组);


在更复杂的情况下,列表还支持对复杂表单的解析:


< PHP
$ = {
{x= 1,y = 2 },
{x= 2,y = 1 }
};

列表(列表(X = $ X1,Y=> $ Y1),列表(x = y = >美元美元X2,Y2))= $点;

$ = {
第一= { 1, 2 },
第二= { 2, 1 }
};

列表(第一=列表($ X1,Y1美元),二=列表($ x2,y2美元))= $点;


以及循环的使用:


< PHP
$ = {
{x= 1,y = 2 },
{x= 2,y = 1 }
};

foreach($点列表(X = X,Y=>Y元)){
点($ x,y)
}


四、空返回类型

php7.0添加指定的函数的返回类型的特点,但不能指定返回类型为void,这个特征与7.1是一个补充:


< PHP
功能:无效should_return_nothing(){
返回1错误:一个空函数;死亡不能返回一个值。
}


以下两种情况可以核实:


< PHP
功能:无效lacks_return(){
有效
}

功能:无效returns_nothing(){
返回
}


定义返回类型空的函数不能返回值,即使返回null:


< PHP
功能:无效returns_one(){
返回1错误:一个空函数;死亡不能返回一个值。
}

功能:无效returns_null(){
返回null错误:一个空函数;死亡不能返回一个值
}


此外,空也只适用于返回类型,不能用于参数类型声明或触发错误:


< PHP
Function foobar (void $foo error: void cannot) {/ / Fatal be used as a parameter type
}


类函数中返回类型的声明不能被子类覆盖,否则将触发错误。


< PHP
类Foo
{
公共功能条():无效{
}
}

foobar扩展类Foo
{
公共功能栏(阵列):错误:{ / /致命的foobar宣言:酒吧(必须):兼容(Foo::酒吧):无效
}
}


五、类常量属性设置

当类中的常量支持被公共、私有和保护修改时,这个特性就更简单了:


< PHP
类标记{
默认值是公共的常量
const public_const = 0;

您可以自定义常数可见范围。
私人const private_const = 0;
保护建设protected_const = 0;
公共建设public_const_two = 0;

多个常量也只声明一个属性。
私有常量= 1,bar = 2;
}


此外,接口(接口)中的常量只能是公共属性:


< PHP
界面内容{
公共常量= 0;
const implicit_public = 1;
}


为了适应这种变化,反射类的实现也得到了充实。对getreflectionconstant和getreflectionconstants两方法添加到恒定的附加属性。


< PHP
class TestClass {
const test_const =测试;
}

$ obj =新reflectionclass(TestClass );
const对象->美元=美元getreflectionconstant(test_const );
把美元美元= obj -> getreflectionconstants();


六,多条件捕获

在以前的尝试中…catch语句,每个catch只能设置条件判决:


< PHP
{试
一些代码…
抓住(exceptiontype1 e){ }
/ / exceptiontype1
抓住(exceptiontype2 e){ }
/ / exceptiontype2
catch(异常){ }

}


在一个新的实现中,可以在catch中设置多于一个的条件,相当于或以判断的形式:


< PHP
{试
一些代码…
抓住(exceptiontype1 exceptiontype2 $ E | } {)
对于exceptiontype1和exceptiontype2 / /
catch(异常){ }

}


一些异常处理被简化了。

总结

以上就是本文的全部内容。希望本文的内容可以帮助你学习或使用php7.1。如果有任何疑问,你可以留言。

附录:源RFC地址

可空类型

数组赋值的方括号语法解构

允许在列表()中指定键

负字符串偏移的广义支持

void返回类型

类常数可见性修饰符

多抓