這篇文章將為大家詳細講解有關PHP5.5至PHP7.2 新特性有哪些,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
在安達等地區(qū),都構建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務理念,為客戶提供成都網(wǎng)站設計、成都網(wǎng)站建設 網(wǎng)站設計制作定制網(wǎng)站,公司網(wǎng)站建設,企業(yè)網(wǎng)站建設,品牌網(wǎng)站設計,營銷型網(wǎng)站,外貿(mào)網(wǎng)站建設,安達網(wǎng)站建設費用合理。一、從PHP 5.5.x 移植到 PHP 5.6.x
使用表達式定義常量
在之前的 PHP 版本中, 必須使用靜態(tài)值來定義常量,聲明屬性以及指定函數(shù)參數(shù)默認值。 現(xiàn)在你可以使用包括數(shù)值、字符串字面量以及其他常量在內(nèi)的數(shù)值表達式來 定義常量、聲明屬性以及設置函數(shù)參數(shù)默認值。
現(xiàn)在可以通過
const
關鍵字來定義類型為array
的常量。使用
...
運算符定義變長參數(shù)函數(shù)現(xiàn)在可以不依賴
func_get_args()
, 使用...
運算符 來實現(xiàn) 變長參數(shù)函數(shù)。以上例程會輸出:
$req: 1; $opt: 0; number of params: 0 $req: 1; $opt: 2; number of params: 0 $req: 1; $opt: 2; number of params: 1 $req: 1; $opt: 2; number of params: 2使用
...
運算符進行參數(shù)展開在調(diào)用函數(shù)的時候,使用
...
運算符, 將 數(shù)組 和 可遍歷 對象展開為函數(shù)參數(shù)。 在其他編程語言,比如 Ruby中,這被稱為連接運算符。以上例程會輸出:
6use function 以及 use const
use 運算符 被進行了擴展以支持在類中導入外部的函數(shù)和常量。 對應的結構為
use function
和use const
。以上例程會輸出:
42 Name\Space\f使用
hash_equals()
比較字符串避免時序攻擊二、從PHP 5.6.x 移植到 PHP 7.0.x
標量類型聲明
標量類型聲明 有兩種模式: 強制 (默認) 和 嚴格模式。 現(xiàn)在可以使用下列類型參數(shù)(無論用強制模式還是嚴格模式): 字符串(string), 整數(shù) (int), 浮點數(shù) (float), 以及布爾值 (bool)。
以上例程會輸出:
int(9)返回值類型聲明
PHP 7 增加了對返回類型聲明的支持。 類似于參數(shù)類型聲明,返回類型聲明指明了函數(shù)返回值的類型??捎玫念愋团c參數(shù)聲明中可用的類型相同。
null合并運算符
由于日常使用中存在大量同時使用三元表達式和 isset()的情況, 我們添加了null合并運算符 (??) 這個語法糖。如果變量存在且值不為NULL, 它就會返回自身的值,否則返回它的第二個操作數(shù)。
太空船操作符(組合比較符)
太空船操作符用于比較兩個表達式。當$a小于、等于或大于$b時它分別返回-1、0或1。 比較的原則是沿用 PHP 的常規(guī)比較規(guī)則進行的。
'1'; // 0 echo 1 <=> 2; // -1 echo 2 <=> 1; // 1 // 浮點數(shù) echo '1.50' <=> 1.5; // 0 echo 1.5 <=> 2.5; // -1 echo 2.5 <=> 1.5; // 1 // 字符串 echo "a" <=> "a"; // 0 echo "a" <=> "b"; // -1 echo "b" <=> "a"; // 1 ?>通過
define()
定義常量數(shù)組Array 類型的常量現(xiàn)在可以通過
define()
來定義。在 PHP5.6 中僅能通過const
定義。define('ANIMALS', [ 'dog', 'cat', 'bird' ]); echo ANIMALS[1]; // 輸出 "cat"Closure::call()
Closure::call()
現(xiàn)在有著更好的性能,簡短干練的暫時綁定一個方法到對象上閉包并調(diào)用它。x;}; $getX = $getXCB->bindTo(new A, 'A'); // 中間層閉包 echo $getX(); // PHP 7+ 及更高版本的代碼 $getX = function() {return $this->x;}; echo $getX->call(new A);以上例程會輸出:
1分組 use 聲明
從同一
namespace
導入的類、函數(shù)和常量現(xiàn)在可以通過單個 use 語句 一次性導入了。生成器可以返回表達式
此特性基于 PHP 5.5 版本中引入的生成器特性構建的。 它允許在生成器函數(shù)中通過使用 return 語法來返回一個表達式 (但是不允許返回引用值), 可以通過調(diào)用 Generator::getReturn() 方法來獲取生成器的返回值, 但是這個方法只能在生成器完成產(chǎn)生工作以后調(diào)用一次。
整數(shù)除法函數(shù)
intdiv()
三、從PHP 7.0.x 移植到 PHP 7.1.x
可為空(Nullable)類型
參數(shù)以及返回值的類型現(xiàn)在可以通過在類型前加上一個問號使之允許為空。 當啟用這個特性時,傳入的參數(shù)或者函數(shù)返回的結果要么是給定的類型,要么是 null 。
以上例程會輸出:
string(10) "elePHPant" NULL string(10) "elePHPant" NULL Uncaught Error: Too few arguments to function test(), 0 passed in...Void 函數(shù)
一個新的返回值類型void被引入。 返回值聲明為 void 類型的方法要么干脆省去
return
語句,要么使用一個空的return
語句。 對于 void 函數(shù)來說,NULL 不是一個合法的返回值。以上例程會輸出:
null int(2) int(1) Symmetric array destructuring短數(shù)組語法([])現(xiàn)在作為list()語法的一個備選項,可以用于將數(shù)組的值賦給一些變量(包括在foreach中)。
類常量可見性
現(xiàn)在起支持設置類常量的可見性。
iterable
偽類現(xiàn)在引入了一個新的被稱為iterable的偽類 (與callable類似)。 這可以被用在參數(shù)或者返回值類型中,它代表接受數(shù)組或者實現(xiàn)了Traversable接口的對象。 至于子類,當用作參數(shù)時,子類可以收緊父類的iterable類型到array 或一個實現(xiàn)了Traversable的對象。對于返回值,子類可以拓寬父類的 array或?qū)ο蠓祷刂殿愋偷絠terable。
多異常捕獲處理
一個catch語句塊現(xiàn)在可以通過管道字符(|)來實現(xiàn)多個異常的捕獲。 這對于需要同時處理來自不同類的不同異常時很有用。
list()現(xiàn)在支持鍵名
現(xiàn)在list()和它的新的[]語法支持在它內(nèi)部去指定鍵名。這意味著它可以將任意類型的數(shù)組 都賦值給一些變量(與短數(shù)組語法類似)
1, "name" => 'Tom'], ["id" => 2, "name" => 'Fred'], ]; // list() style list("id" => $id1, "name" => $name1) = $data[0]; // [] style ["id" => $id1, "name" => $name1] = $data[0]; // list() style foreach ($data as list("id" => $id, "name" => $name)) { // logic here with $id and $name } // [] style foreach ($data as ["id" => $id, "name" => $name]) { // logic here with $id and $name }四、從PHP 7.1.x 移植到 PHP 7.2.x
新的對象類型
這種新的對象類型, object, 引進了可用于逆變(contravariant)參數(shù)輸入和協(xié)變(covariant)返回任何對象類型。
允許重寫抽象方法(Abstract method)
當一個抽象類繼承于另外一個抽象類的時候,繼承后的抽象類可以重寫被繼承的抽象類的抽象方法。
abstract class A { abstract function test(string $s); } abstract class B extends A { // overridden - still maintaining contravariance for parameters and covariance for return abstract function test($s) : int; }擴展了參數(shù)類型
重寫方法和接口實現(xiàn)的參數(shù)類型現(xiàn)在可以省略了。不過這仍然是符合LSP,因為現(xiàn)在這種參數(shù)類型是逆變的。
interface A { public function Test(array $input); } class B implements A { public function Test($input){} // type omitted for $input }允許分組命名空間的尾部逗號
命名空間可以在PHP 7中使用尾隨逗號進行分組引入。
use Foo\Bar\{ Foo, Bar, Baz, };關于PHP5.5至PHP7.2 新特性有哪些就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
文章名稱:PHP5.5至PHP7.2新特性有哪些-創(chuàng)新互聯(lián)
網(wǎng)站URL:http://weahome.cn/article/dhdjep.html