深入探讨 PHP 的构造函数属性提升:简化类定义,提高代码效率

admin 2024-01-20 72 阅读 0评论

在深入研究 PHP 时,尤其是项目开发时,定义类是必不可少的步骤之一。类是创建对象的蓝图,封装特定于该类的数据和功能。PHP 提供了强大的功能来处理类、构造函数、对象和方法。

在 PHP 中定义类:

让我们考虑一个简单的例子,创建一个名为 Bird 的类。该类将有两个属性:name 和 voice

在传统的 PHP 语法中,类定义如下:

class Bird {
    
    private string $name;
    private string $voice;

    function __construct($name$voice) {
        $this->name = $name;
        $this->voice = $voice;
    }
    
    function name() {
        return $this->name;
    }

    function voice() {
        return $this->voice;
    }
}

$bird = new Bird("鸭子""嘎嘎");
print_r($bird);

在此代码片段中,Bird 类定义了两个私有属性:name 和 voice。该 __construct() 方法(构造函数)初始化这些属性。该 voice() 方法返回鸟的声音。

使用 "鸭子" 和 "嘎嘎" 值实例化该类并打印它会显示这些属性。

利用 PHP 中的构造函数属性提升

PHP 8.0 引入了构造函数属性提升功能,简化了类属性初始化,在属性仅通过构造函数分配的情况下特别有用。

让我们使用构造函数属性提升重构 Bird 类:

<?php
class Bird {
    
    function __construct(
        private string $name,
        private string $voice
    ) {}

    function name() {
        return $this->name;
    }

    function name() {
        return $this->name;
    }

    function voice() {
        return $this->voice;
    }
}

$bird = new Bird("鸭子""嘎嘎");
print_r($bird);
?>

通过构造函数属性提升,属性 name 和 voice 会直接在构造函数的参数列表中初始化,从而无需在构造函数体内进行显式属性声明和赋值。为了对称性,还添加了 name() 方法,允许访问鸟的名字。

构造函数中的默认值

构造函数中的默认值可以像传统方式一样进行分配。

例如,以下代码为 Bird 类定义了两个属性:name 和 voice。其中,voice 属性具有默认值 "Beep":

class Bird {
    
    function __construct(
        private string $name,
        private string $voice = "Beep"
    ) {}

}

构造函数推广的优势

  • 更简洁的代码:构造函数推广可以减少样板代码,使类定义更加简洁和可读。
  • 效率:构造函数推广可以简化属性初始化,特别是对于具有多个属性的类。
  • 封装:构造函数推广可以保持私有属性的封装优点,同时简化初始化。

构造函数属性提升是 PHP 不断发展的功能的又一个例子。这些功能使 PHP 成为一种更强大、更易于使用的语言。无论您是处理简单的任务还是复杂的系统,PHP 都可以帮助您提高编码效率和工作效率。

发表评论

快捷回复: 表情:
Addoil Applause Badlaugh Bomb Coffee Fabulous Facepalm Feces Frown Heyha Insidious KeepFighting NoProb PigHead Shocked Sinistersmile Slap Social Sweat Tolaugh Watermelon Witty Wow Yeah Yellowdog
提交
评论列表 (有 0 条评论, 72人围观)
0.167946s