宝哥软件园

PHP7.0版本备注

编辑:宝哥软件园 来源:互联网 时间:2021-09-09

新版PHP7.0不仅性能有了很大的提升,在语言特性方面也有了很大的变化。具体解释请见下文:

1.向后不兼容的语言更改

变量处理的变化间接变量、属性和方法引用现在用从左到右的语义来解释。一些例子:

$$foo['bar']['baz'] //解释($ $ foo)[' bar '][' baz ']$ foo-$ bar[' baz ']//解释($ foo-$ bar)['baz']$ foo foo :美元bar['baz']() //解释(foo :3360美元bar)[' baz ']()要恢复之前的行为,需要显式添加括号:

$ { $ foo[' bar '][' baz ']} $ foo-{ $ bar[' baz ']} $ foo-{ $ bar[' baz ']}()foo :3360 { $ bar[' baz ']}()全局关键字和旧的一样

复制代码如下: global $ $ foo-bar;现在要求写如下:

复制代码如下: global $ { $ foo-bar };变量或函数调用周围的圆括号不再有任何作用。例如,在下面的代码中,函数调用的结果通过引用传递给函数

函数getArray() { return [1,2,3];} $ last=array _ pop(GetArray());//严格标准:只有变量可以通过引用传递$ last=array _ pop((getArray()));//严格标准:只能通过引用传递变量。现在无论是否使用括号,都会抛出一个严格的标准错误。过去第二种通话模式没有提示。

数组元素或对象属性会自动安装,并按引用顺序创建。现在结果顺序就不一样了。例如:

$ array=[];$ array[' a ']=$ array[' b '];$ array[' b ']=1;var _ dump($ array);现在的结果是['a'=1,' b'=1],而之前的结果是['b'=1,' a'=1]相关的RFC:

https://wiki.php.net/RFC/uniform _变量_语法https://wiki.php.net/RFC/abstract _语法_树列表()的更改列表()不再以相反的顺序分配,例如:

复制代码如下:List ($ array [],$ array [],$ array [])=[1,2,3];var _ dump($ array);现在的结果是$array==[1,2,3]而不是[3,2,1]。请注意,只有赋值顺序发生了变化,但赋值仍然是一致的(LCTT翻译:也就是说,前面的list()行为开始从以下变量中逐个赋值,这将为上述用法产生[3,2,1]的结果。)。例如,一般用法如下

副本代码如下:list($a,$b,$c)=[1,2,3];//$ a=1;$ b=2;$ c=3;还是保持现在的行为。

不再允许分配空列表()。以下全部无效:

list()=$ a;list(,)=$ a;list($x,list(),$ y)=$ a;List()不再支持拆分字符串(以前只在某些情况下支持)

以下代码:

复制代码如下: $ string=' xylist($x,$ y)=$ string;现在的结果是:$x==null和$y==null(没有提示),而之前的结果是:$x=='x '和$y=='y '。

此外,list()现在可以始终处理实现ArrayAccess的对象,例如:

复制代码如下:List ($ a,$ b)=(object) new ArrayObject ([0,1]);现在的结果是:$a==0,$b==1。以前,$a和$b都是空的。

相关RFC:

https://wiki.php.net/RFC/abstract _语法_树# changes _ to _ listhttps://wiki.php.net/RFC/fix _ list _ behavior _ unconsistency foreach的change foreach()迭代不再影响数组的内部指针,数组指针可以通过current()/next()等系列传递例如:

复制代码代码,如

更多资讯
游戏推荐
更多+