php7新特性

 1、前言php

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

 

2、新特性php7

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

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

 

1.1  標量類型聲明oop

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

function testClass(類名 $c)優化

{url

}spa

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

 

 

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

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

涉及的內容很少,直接看上面的url便可。

 

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

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

涉及的內容很少,直接看上面的url便可。

相關文章
相關標籤/搜索