📜  嵌套属性 - PHP 8.1 - PHP (1)

📅  最后修改于: 2023-12-03 15:09:41.160000             🧑  作者: Mango

嵌套属性 - PHP 8.1

在 PHP 8.1 中,新添加了嵌套属性的特性,也称为“连贯属性”的语法糖。这个新特性可以极大地简化代码的编写,使代码更加易读易懂。

什么是嵌套属性?

嵌套属性是一种将多个对象属性的访问方法链式连接在一起的语法糖。简而言之,就是在一行代码中访问多个嵌套对象的属性。

以前的访问方式可能会是这样的:

$book = new stdClass();
$book->author = new stdClass();
$book->author->name = "John Doe";
$book->author->email = "john.doe@example.com";

使用嵌套属性后,以上代码可以被简化成:

$book = new stdClass();
$book->author?->name = "John Doe";
$book->author?->email = "john.doe@example.com";

使用 ?-> 连接符代替原来的 -> 连接符即可实现嵌套属性的访问方法。

为什么使用嵌套属性?

嵌套属性的访问代码更加简洁,易于理解。它可以帮助我们快速地访问多个嵌套对象中的属性值,减少了代码量和开发时间。

在嵌套属性的访问方式中,当对象不存在时,不会抛出错误,而是返回 null 值。这使得代码不会出现致命错误,从而提高了代码的可靠性。

如何在项目中使用嵌套属性?

如果你想在项目中使用嵌套属性,首先要确保你的 PHP 版本大于等于 8.1。

接着,你可以通过以下方式来使用嵌套属性:

$obj1?key1->key2->key3?->key4

其中,? 表示安全访问符,如果前面的值不存在,则返回 null。

下面是一个简单的例子:

$person = new stdClass();
$person->name = "John Doe";
$person->address = new stdClass();
$person->address->city = "New York";
$person->phone = new stdClass();
$person->phone->home = "123456789";
$person->phone->office = "987654321";

echo $person->name . " lives in " . $person->address->city . "."; // 输出: John Doe lives in New York.
echo $person->phone->mobile; // Notice: Undefined property: stdClass::$mobile

echo $person->phone?->mobile; // 输出: null

在上面的例子中,我们使用嵌套属性来访问 $person 对象中的 $address$phone 对象中的属性。

总结

嵌套属性是 PHP 8.1 中的一个新特性,它可以简化代码的编写,使其更加易读易懂。在使用嵌套属性时,要注意对象的存在性,使用安全访问符可以避免致命错误的发生。在你的项目中使用嵌套属性可以提高代码的效率,并减少代码量。