PHP 8 中的构造函数属性提升


在 PHP 8 中,添加了构造函数属性提升。它有助于在构建简单对象时减少大量冗余代码。此功能允许我们将类字段、构造函数定义和变量赋值(全部在一个语法中)组合到构造函数参数列表里。

我们可以说,我们可以通过构造函数属性提升将类属性和构造函数组合起来,而不是单独指定它们。

示例 1:PHP 7 代码

<?php
   class Account {
      public float $a;
      public float $b;
      public float $c;
      public function __construct(
         float $a = 0.0,
         float $b = 0.0,
         float $c = 0.0,
      )
      {
         $this->a = $x;
         $this->b = $y;
         $this->c = $z;
      }
   }
?>

示例 2:PHP 8 代码

我们可以按照如下方式将上面的 PHP 7 代码重写为 PHP 8 代码 -

<?php
   class Account {
      public function __construct(

         public float $a = 0.0,
         public float $b = 0.0,
         public float $c = 0.0,
      ) {}
   }
   $Account =new Account (10.90,20.0,30.80);
      print_r($Account->a);
      print_r($Account->a);
      print_r($Account->a);
?>

输出

10.9 20 30.8

在上面的代码中,我们将属性定义和填充内置在了构造函数签名中。这段代码将去除重复项。

示例 3:用于构造函数属性提升的 PHP 8 代码

<?php
   class Employee {
      public function __construct(
         public int $id,
         public string $name,
      ) {}
   }
   $employee = new Employee(11, 'Alex');
      print_r($employee->id);
      print_r($employee->name);
?>

输出

11 Alex

更新于: 2021 年 4 月 1 日

694 次浏览

职业起航

完成课程即可获得认证

开始
广告
© . All rights reserved.