在 Laravel 9 中,变异器有不同的实现。下面的例子来自官方文档.
protected function firstName(): Attribute
{
return Attribute::make(
get: fn ($value) => ucfirst($value),
set: fn ($value) => strtolower($value),
);
}
但什么是colon: after get
and set
?这是 PHP 8 中的新功能吗? Attribute::make 的定义是:
public static function make(callable $get = null, callable $set = null): Attribute
命名参数是 PHP 8.0 中的新功能。
在具有简单签名的函数或方法中,它可以充当一种自我文档来指示参数是什么。例如,在您提供的代码中,两个参数都是简单的回调,对提供的值执行基本的字符串操作。如果没有参数名称,阅读代码的人将需要检查方法签名以了解每个参数的作用。
这也是一种在使用具有长签名或复杂默认值的函数或方法时仅指定所需参数的便捷方法。
例如,签名为htmlspecialchars()
看起来像这样:
htmlspecialchars(
string $string,
int $flags = ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401,
?string $encoding = null,
bool $double_encode = true
): string
在以前的版本中,如果您想更改double_encode
参数为 false,但将其他参数保留为默认值,您必须这样做:
<?php
htmlspecialchars(
"Some text & stuff",
ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401,
null,
false
);
但对于命名参数,它看起来像这样:
<?php
htmlspecialchars(
"Some text & stuff",
double_encode: false
);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)