<pre id="bbfd9"><del id="bbfd9"><dfn id="bbfd9"></dfn></del></pre>

          <ruby id="bbfd9"></ruby><p id="bbfd9"><mark id="bbfd9"></mark></p>

          <p id="bbfd9"></p>

          <p id="bbfd9"><cite id="bbfd9"></cite></p>

            <th id="bbfd9"><form id="bbfd9"><dl id="bbfd9"></dl></form></th>

            <p id="bbfd9"><cite id="bbfd9"></cite></p><p id="bbfd9"></p>
            <p id="bbfd9"><cite id="bbfd9"><progress id="bbfd9"></progress></cite></p>
            php語言

            PHP 7.1中都有哪些重大更新

            時間:2025-04-26 19:19:45 php語言 我要投稿
            • 相關推薦

            PHP 7.1中都有哪些重大更新

              PHP 7.1.0 帶來了大量的改進和新功能: 可空類型 返回空類型 可迭代的psuedo-type 支持常量可見的類 數組解構 square 框架和在 list()中允許指定 keys 多異常類型捕獲,以下是小編為大家搜索整理的PHP 7.1中都有哪些重大更新,希望能給大家帶來幫助!更多精彩內容請及時關注我們應屆畢業生考試網!

              可空類型

              PHP 7添加了參數類型聲明和函數返回值類型聲明,函數參數或者返回值的類型要么為指定類型要么為null。舉例如下:

              function sum(int $a, int $b): ?int{

              return $a + $b;

              }

              上述函數可以返回一個整數或一個空值,所以如果函數的邏輯中有錯誤,將不會再返回一個空類型來報錯。你也可以驗證一下。

              function sum(?int $a, ?int $b): ?int{

              if ($a == null || $b == null) { return null;

              } return $a + $b;

              }

              要注意的是:調用沒有參數的函數將拋出異常!

              var_dump(sum(null, null)); // NULLvar_dump(sum()); // throw ArgumentCountError exception

              這意味著,當他們沒有默認值時,應該顯示指定參數。

              還有就是,在重載或實現方法時不能把可空類型作為返回類型,但你可以刪除它。反之亦然!

              interface Fooable {

              function foo(): ?Fooable;}interface StrictFooable extends Fooable {

              function foo(): Fooable; // valid}interface Fooable {

              function foo(): Fooable;}interface LooseFooable extends Fooable {

              function foo(): ?Fooable; // invalid}

              解構陣列

              當我們解構陣列是通常會這樣做:

              list($a, $b, $c) = [1, 2, 3];

              var_dump($a, $b, $c); // int(1) int(2) int(3)

              但這是錯的,因為我們不能指定鍵來提取和嘗試使用索引鍵的功能

              list($a, $b, $c) = ["a" => 1, "b" => 2, "c" => 3];

              var_dump($a, $b, $c); // NULL NULL NULL

              RFC提供了更多的控制陣列的解構。上面的代碼可以改為:

              list("a" => $a, "b" => $b, "c" => $c) = ["a" => 1, "b" => 2, "c" => 3];

              var_dump($a, $b, $c); // int(1) int(2) int(3)

              上面的例子可以寫成:

              ["a" => $a, "b" => $b, "c" => $c] = ["a" => 1, "b" => 2, "c" => 3];

              var_dump($a, $b, $c); // int(1) int(2) int(3)

              很酷對不對?它還適用于多維數組:

              [[$a, $b], [$c, $d]] = [[1, 2], [3, 4]];

              var_dump($a, $b, $c, $d); // int(1) int(2) int(3) int(4)[["b" => $b], ["c" => $c]] = [["a" => 1, "b" => 2], ["c" => 3, "d" => 4]];

              var_dump($b, $c); // int(2) int(3)

              Iterable 偽類

              PHP 7.1 新引入了一個被稱為 iterable 的偽類。

              它可以被用在參數或者返回值類型中,它代表接受數組或者實現了 Traversable 接口的對象。以下面的代碼為例:

              // PHP 5.6function dump(array $items){

              var_dump($items);

              }

              dump([2, 3, 4]);

              dump(new Collection());

              array(3) {

              [0]=>

              int(2)

              [1]=>

              int(3)

              [2]=>

              int(4)

              }

              Catchable fatal error: Argument 1 passed to dump() must be of the type array, object given...

              但在這種情況下,函數不會接受一個價值,將拋出一個錯誤。這一新的變化,讓你使用迭代來描述而不是手動一個價值主張。

              // PHP 7.1function dump(iterable $items){

              var_dump($items);

              }

              dump([2, 3, 4]);

              dump(new Collection());

              array(3) {

              [0]=>

              int(2)

              [1]=>

              int(3)

              [2]=>

              int(4)

              }

              object(Collection)#2 (0) {}

              void返回類型

              這是我最喜歡的新功能之一。PHP 7添加了指定函數返回類型的特性,一個新的返回值類型 void 被引入。試圖去獲取一個void 方法的返回值時,將被迫返回null!并且不會產生任何警告。

              function dump($object): void{

              var_dump($object);

              }

              返回類型聲明為 void 類型的方法要么干脆省去 return 語句,要么添加一個空的函數(return;)。

              類常量的可見性

              雖然這是個很小的變化,但是加強了面向對象的封裝,現在起支持設置類常量的可見性:

              class Post{

              protected const PUBLISHED = 1; protected const DRAFT = 2; protected const TRASHED = 3; // ...}

              捕獲多個異常類型

              在以往的try... catch 語句中,每個catch 只能設定一個條件判斷,新的版本可以在一個 catch 中設置多個條件,從而減少了需要復制的代碼。 Java 等其他語言同樣具備這種能力。以下面的代碼為例:

              // ...try { $user->payMonth($month);

              } catch (UserSuspendedException $ex) {

              DB::rollBack(); return redirect()

              ->back()

              ->withInput()

              ->withErrors([$ex->getMessage()]);

              } catch (PaidMonthException $e) {

              DB::rollBack(); return redirect()

              ->back()

              ->withInput()

              ->withErrors([$ex->getMessage()]);

              }// ...


            更多PHP相關文章推薦:

            1.phpStorm 2017特色

            2.php如何禁用eval函數

            3.10個技巧優化PHP程序Laravel 5框架

            4.如何選擇PHP版本

            5.編譯chm格式PHP手冊的'方法

            6.PHPMYADMIN簡明安裝教程

            7.數據庫設計和訪問數據庫的 PHP 代碼中出現的五個常見問題

            8.php內核分析之全局變量

            9.php實現讀取手機客戶端瀏覽器的類

            10.自學PHP方法

            【PHP 7.1中都有哪些重大更新】相關文章:

            PHP 7.1 中的重大更新有哪些11-08

            PHP 7.1中有哪些重大的更新07-27

            PHP7.1中有哪些重大的更新10-28

            PHP7.1中重大更新是什么10-28

            淺析今年熱門的PHP框架都有哪些08-16

            php用法有哪些06-16

            php要學哪些09-20

            職稱考試都有哪些07-21

            WPS2016更新了哪些功能07-22

                    <pre id="bbfd9"><del id="bbfd9"><dfn id="bbfd9"></dfn></del></pre>

                    <ruby id="bbfd9"></ruby><p id="bbfd9"><mark id="bbfd9"></mark></p>

                    <p id="bbfd9"></p>

                    <p id="bbfd9"><cite id="bbfd9"></cite></p>

                      <th id="bbfd9"><form id="bbfd9"><dl id="bbfd9"></dl></form></th>

                      <p id="bbfd9"><cite id="bbfd9"></cite></p><p id="bbfd9"></p>
                      <p id="bbfd9"><cite id="bbfd9"><progress id="bbfd9"></progress></cite></p>
                      飘沙影院