<address id="ousso"></address>
<form id="ousso"><track id="ousso"><big id="ousso"></big></track></form>
  1. PHP 7.1中有哪些重大的更新

    時間:2025-10-30 03:42:23 php語言

    PHP 7.1中有哪些重大的更新

      PHP 7.1.0 帶來了大量的改進和新功能: 可空類型 返回空類型 可迭代的psuedo-type 支持常量可見的類 數組解構 square 框架和在 list()中允許指定 keys 多異常類型捕獲

      可空類型

      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)); /pic/pic/p>

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

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

      interface Fooable {

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

      function foo(): Fooable; /pic/p>

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

      function foo(): ?Fooable; /pic/p>

      解構陣列

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

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

      var_dump($a, $b, $c); /pic/p>

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

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

      var_dump($a, $b, $c); /pic/p>

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

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

      var_dump($a, $b, $c); /pic/p>

      上面的例子可以寫成:

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

      var_dump($a, $b, $c); /pic/p>

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

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

      var_dump($a, $b, $c, $d); /pic/p>

      var_dump($b, $c); /pic/p>

      Iterable 偽類

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

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

      /pic/p>

      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...

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

      /pic/p>

      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;    /pic/p>

      捕獲多個異常類型

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

      /pic/p>

      } catch (UserSuspendedException $ex) {

      DB::rollBack();    return redirect()

      ->back()

      ->withInput()

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

      } catch (PaidMonthException $e) {

      DB::rollBack();    return redirect()

      ->back()

      ->withInput()

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

      }/pic/p>

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

    PHP7.1中有哪些重大的更新11-13

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

    PHP 7.1中都有哪些重大更新10-23

    PHP7.1中重大更新是什么01-11

    php要學哪些01-11

    php用法有哪些03-04

    WPS2016更新了哪些功能09-05

    php中的注釋包括哪些03-07

    PHP到底要學習哪些01-30

    <address id="ousso"></address>
    <form id="ousso"><track id="ousso"><big id="ousso"></big></track></form>
    1. 日日做夜狠狠爱欧美黑人