PHP8的一些新特性之構造方法屬性提升

24K大白羊發表於2020-12-30

這個提升在我們日常開發中也是適用頻率很高的,在 PHP7 的時候,已經可以指定變數或者引數的型別了,如果型別不一致,在呼叫的時候就會報錯。但我們在構造方法中傳遞引數的時候,會有一些冗餘的程式碼,之前的處理方式總共分三部

  • 在類中定義成員變數

  • 在構造方法中定義引數

  • 在構造方法內對成員變數進行賦值

    // PHP7
    class Point {
      public float $x;
      public float $y;
      public float $z;
    
      public function __construct(float $x = 0.0, float $y = 0.0, float $z = 0.0 )
      {
        $this->x = $x;
        $this->y = $y;
        $this->z = $z;
      }
    }

    如果我們在PHP8中就無需這麼繁瑣了,直接在構造方法的引數中進行處理,一次性搞定。

    class Point {
    public function __construct(
      public float $x = 0.0,
      public float $y = 0.0,
      public float $z = 0.0,
    ) {}
    }

    一次性完成了成員變數定義、引數定義以及賦值這三個過程。

程式碼越少,出 Bug 的機率就越小。

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章