PHP public 只读属性与 getter 的私有字段
PHP public readonly properties vs private field with getter
PHP 8.1 引入了 readonly
class 属性。例如,在我写之前:
class User
{
public string $name;
public function __construct(string $name) {
$this->name = $name;
}
public getName(): string {
return $this->name;
}
}
但现在我可以做到:
class User
{
public function __construct(
public readonly string $name,
) {}
}
后者显然更紧凑,所以我想知道这种语法是否完全取代了每个用例的前者,或者仍然存在应该首选“旧”语法的情况?
“旧”方式的一个优点是您可以为 getter 和 setter 选择不同的访问级别,而 readonly
字段只有一个访问级别。例如。当您希望 setter 成为 protected
.
使用 getters 的另一个优点是它允许您在不更改 class 接口的情况下更改实现。
PHP 8.1 引入了 readonly
class 属性。例如,在我写之前:
class User
{
public string $name;
public function __construct(string $name) {
$this->name = $name;
}
public getName(): string {
return $this->name;
}
}
但现在我可以做到:
class User
{
public function __construct(
public readonly string $name,
) {}
}
后者显然更紧凑,所以我想知道这种语法是否完全取代了每个用例的前者,或者仍然存在应该首选“旧”语法的情况?
“旧”方式的一个优点是您可以为 getter 和 setter 选择不同的访问级别,而 readonly
字段只有一个访问级别。例如。当您希望 setter 成为 protected
.
使用 getters 的另一个优点是它允许您在不更改 class 接口的情况下更改实现。