php7新特性


 一、前言

  php7目前(截止2018-09-17),最新的穩定版本是7.2.10(http://php.net/downloads.php上可查看版本信息),目前還有不少項目是用5.6甚至更早的版本。相比於php5.x的版本,php7有不少新的改進,性能方面也是有不少提升。下面來詳細講下。

 

二、新特性

1、php7.0相比於php5.6的新特性

參考:http://php.net/manual/zh/migration70.new-features.php 下面所講的內容都是來自於這篇文章,只是詳細地解釋。

 

1.1  標量類型聲明

函數/方法中的參數,是可以加一個類型聲明的,這個是php5.0就開始支持的,比如:

function testClass(類名 $c)

{

}

function testArray(array $a)

{

}

php5.x支持的這個類型不多,php7增加了幾個:

參考:http://php.net/manual/zh/functions.arguments.php#functions.arguments.type-declaration

這里的意思是,方法的參數的類型,只支持上面列出的這些類型,如果是其他類型,php5報錯致命錯誤,php7會報錯TypeError的異常。

舉個例子:

function test (boolean $b)

{

}

test(true);

執行結果:

 Fatal error: Uncaught TypeError: Argument 1 passed to test() must be an instance of boolean, boolean given, called in - on line 1 and defined in -:1

這里報錯的原因是參數類型boolean不是一個合法的類型,上面截圖中可以看到是bool才對,不能用boolean。這里有點不好理解,就是我們大多會認為boolean就是bool,所以這里應該是規定好的,就是只能用bool,不能用boolean。

同理,用integer也是錯的,要用int。 float是包含了float和double的,如果用double也是會報錯的。再解釋下,用boolean的時候,因為不是bool,也不是int、float、self、array等,所以這個boolean會被認為是class或者interface,

報錯信息里面展示的是參數必須是boolean(類或接口)的一個實例,但是調用時傳入的參數是boolean類型(true的類型)。有點繞,但是應該不難理解。

 

1.2 返回值類型聲明

 

返回值的類型,跟參數的類型一致。

 【注意】在默認情況下,函數返回值如果和定義的不一致,會進行強制轉換,在嚴格模式下,則會報錯TypeError。

這個例子這里是強制轉換了類型。

 函數返回值的說明參考:http://php.net/manual/zh/functions.returning-values.php#functions.returning-values.type-declaration

 

1.3 null合並運算符

 

 

1.4 太空船操作符(暫時不清楚這個操作符有什么實際用處,后續了解清楚再補充上)

 

 

 1.5 define允許定義常量數組

 我們來看下define的聲明,參考:http://php.net/manual/zh/function.define.php

 

這個新特性大概是為了豐富define的功能,const已經實現了這個功能了的。

 

1.6 匿名類

 

詳細的匿名類參考:http://php.net/manual/zh/language.oop5.anonymous.php

 

【備注】考慮到篇幅問題,先跳過中間幾個個人覺得不太常用的特性

 

 1.7 use分組命名空間

這里可以用一行代碼引入同一個命名空間下的多個類,而不是之前那樣需要每個類一行代碼,算是一種優化。

 

 

1.8 新增整數整除的函數intdiv()

返回值為整型。

參考:http://php.net/manual/zh/function.intdiv.php

 

1.9 新增的隨機函數

參考:

http://php.net/manual/zh/function.random-bytes.php

http://php.net/manual/zh/function.random-int.php

 

 

2、php7.1相對於php7.0的新特性

參考:http://php.net/manual/zh/migration71.new-features.php

涉及的內容不多,直接看上面的url即可。

 

3、php7.2相對於php7.1的新特性

參考:http://php.net/manual/zh/migration72.new-features.php

涉及的內容不多,直接看上面的url即可。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM