PHP7 常用新特性

2021-09-02 21:39:07 字數 1976 閱讀 7740

1.標量型別宣告

php是一種弱型別的程式語言,因此沒有提供任何方法來指定輸入引數和返回值的型別,php7突破了這種現狀,增加了對標量型別(int,float,string,bool)的宣告支援,增加declare(strict_types=1)指令宣告是否嚴格型別校驗,來看一段**:

declare(strict_types=1)

function add(int $x, int $y) : int

return $x+ $y;

echo add(1, 2); //int(7)  

有效的型別有:class/inte***cename, self, array, callable, bool, float, int and string.

如果不開啟strict_type,php將會嘗試幫你轉換成要求的型別,而開啟之後,會改變php就不再做型別轉換,型別不匹配就會丟擲錯誤。

2. ?? ——null合併運算子

php7中新增了null合併運算子,不要小看這個「??」,有了它我們就能很方便的獲取乙個引數,並能在其為空的情況下提供乙個預設值。如何??運算子左側值存在並且不為null,則返回左側,否則將返回其右側值。

<?php  

// 獲取user引數的值(如果為空,則用'nobody')  

// php5中我們這樣來實現:  

$username = isset($_get['user']) ? $_get['user'] :'nobody';  

// php7中,使用??運算子更便捷:  

$username = $_get['user'] ?? 'nobody';  

3.匿名類

匿名類顧名思義沒有類名稱,其宣告和例項化是同時的,php7 支援通過 new class 來例項化乙個匿名類,可以用來替代一些"用後即焚"的完整類定義。

echo (new class() )->mymethod();

//result: hello!

4.定義陣列常量

define('myconstant', array('a','b','c'));

5.結合比較運算子(<=>)

用於比較兩個表示式。當$a 大於、等於或小於$b 時它分別返回1、0或-1

// php 7之前的寫法:比較兩個數的大小  

function func ( $ a , $ b ) catch (\divisionbyzeroerror | \lengthexception $e) catch (\exception $e) finally {

7.use 組合宣告

use 組合宣告可以減少 use 的輸入冗餘。

use phpgoodtaste\utils\{

util,

form,

form\validation,

form\binding

8. 更多的error變為可捕獲的exception

php7實現了乙個全域性的throwable介面,原來的exception和部分error都實現了這個介面(inte***ce), 以介面的方式定義了異常的繼承結構。於是,php7中更多的error變為可捕獲的exception返回給開發者,如果不進行捕獲則為error,如果捕獲就變為乙個可在程式內處理的exception。這些可**獲的error通常都是不會對程式造成致命傷害的error,例如函式不存。php7進一步方便開發者處理,讓開發者對程式的掌控能力更強。因為在預設情況下,error會直接導致程式中斷,而php7則提供捕獲並且處理的能力,讓程式繼續執行下去,為程式設計師提供更靈活的選擇。

例如,執行乙個我們不確定是否存在的函式,php5相容的做法是在函式被呼叫之前追加的判斷function_exist,而php7則支援捕獲exception的處理方式。

php7的新特性

截止到目前為止,php官方已經發布了php7的rc5版本,預計在11月份左右會發布第乙個正式版本!現在來說php7的重大特性肯定已經是定型了,不會再有什麼變動了。後續一些版本的迭代主要也就是修修bug,優化之類的。下面就來說話我們一直期待的php7.0新特徵吧。1.標量引數型別宣告 現在支援字串 s...

PHP7的新特性

php7 從發布到現在已經有快三年的時間了,現在已經發展到 php7.2.9 版本了。它的發布給 php 帶來了很大的效能提公升,這主要是得益於 php 對 zend 引擎的深度優化,同時還降低了 php 對系統的資源占用。主要的變化有以下幾點 在php之前的版本中,php 在語法解析階段直接生成了...

php7的新特性

php7新特性 太空船操作符 echo 1 1 0 echo 1 2 1 echo 2 1 1 型別宣告 declare strict types 1 strict types 1表示開啟嚴格模式 function sum int.ints int 3.null合併操作符 page 0 page?0...