Property Hooks RFC在PHP 8.4中越来越接近现实
php  /  管理员 发布于 7个月前   224
Property Hooks RFC通过了一个重要的里程碑,获得了压倒性的34张赞成票和1张反对票。
这远远高于通过所需的2/3多数票。
https://wiki.php.net/rfc/property-hooks
PHP中的Property Hooks RFC(属性挂钩)是什么?
以下是RFC的提案摘要:
开发人员经常使用方法来包装和保护对对象属性的访问。
对于这种逻辑,有几种非常常见的模式,在实践中,重复实现这些模式可能很繁琐。
或者,开发人员可以使用__get和__set来拦截一般的读写操作,
但这是一种无条件拦截所有未定义(和一些已定义)属性的大锤方法。
属性挂钩为常见的属性交互提供了一个更有针对性、专门构建的工具。。。
这个RFC引入了两个“钩子”来覆盖属性的默认“get”和“set”行为。
虽然没有包含在这个初始版本中,但该设计包括在未来支持更多钩子的能力。
属性挂钩的灵感来自Kotlin、C#和Swift等语言,
语法包括两种类似于短闭包和多行闭包的语法变体:
class User implements Named
{
private bool $isModified = false;
public function __construct(
private string $first,
private string $last
) {}
public string $fullName {
// Override the "read" action with arbitrary logic.
get => $this->first . " " . $this->last;
// Override the "write" action with arbitrary logic.
set {
[$this->first, $this->last] = explode(' ', $value, 2);
$this->isModified = true;
}
}
}
语法并不要求两个钩子总是一起定义;
事实上,这里有一个仅从RFC定义集合的示例:
class User
{
public string $name {
set {
if (strlen($value) === 0) {
throw new ValueError("Name must be non-empty");
}
$this->name = $value;
}
}
public function __construct(string $name) {
$this->name = $name;
}
}
您可以在RFC中阅读有关PHP中属性挂钩的所有详细信息。
https://wiki.php.net/rfc/property-hooks
这个特性在PHP8.4中可能会被弃用。
如果您想了解此功能的讨论和进展情况,那么该实现已经是一个draft pull请求。
https://github.com/php/php-src/pull/13455
123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..路人 在
php中使用hyperf框架调用讯飞星火大模型实现国内版chatgpt功能示例中评论 教程很详细,如果加个前端chatgpt对话页面就完美了..Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号