PHP 8.4 中是否会支持在没有额外括号的情况下进行类实例化?

发布于 作者

Is class instantiation without extra parenthesis coming to PHP 8.4? image

用于省略 new 表达式周围括号的 RFC 很可能将在 PHP 8.4 中发布。该 RFC 目前处于投票阶段,有 21 票赞成,3 票反对。投票将于 5 月 24 日结束,因此 2/3 的投票仍然有可能失败,但乐观地讲,它似乎正在朝正确的方向发展。

自从引入实例化期间的成员访问后,您必须将 new MyClass() 调用括在括号中,否则会发生解析错误。建议的语法将允许您在没有额外括号的情况下访问常量、属性和方法

class Request implements Psr\Http\Message\RequestInterface
{
// ...
}
 
// Valid
$request = (new Request())->withMethod('GET')->withUri('/hello-world');
 
// PHP Parse error: syntax error, unexpected token "->"
$request = new Request()->withMethod('GET')->withUri('/hello-world');

以下是一些您可能会使用此功能的常见示例(RFC 包含更多示例)

var_dump(
new MyClass()::CONSTANT, // string(8) "constant"
new MyClass()::$staticProperty, // string(14) "staticProperty"
new MyClass()::staticMethod(), // string(12) "staticMethod"
new MyClass()->property, // string(8) "property"
new MyClass()->method(), // string(6) "method"
new MyClass()(), // string(8) "__invoke"
);

您可以在 RFC 中阅读有关此建议更改的所有详细信息。此功能可能会在 PHP 8.4 中发布。该实现看起来已经完成编码(尚未批准和合并),您可以在 GitHub 上 找到它。

Paul Redmond photo

Laravel 新闻的撰稿人。全栈 Web 开发人员和作家。

归档在
Cube

Laravel 时事通讯

加入 40k+ 其他开发人员,不要错过任何新的技巧、教程等。

Laravel Forge logo

Laravel Forge

轻松创建和管理您的服务器,并在几秒钟内部署您的 Laravel 应用程序。

Laravel Forge
Tinkerwell logo

Tinkerwell

Laravel 开发人员必备的代码运行器。使用 AI、自动补全和对本地和生产环境的即时反馈进行调试。

Tinkerwell
No Compromises logo

绝不妥协

Joel 和 Aaron,来自“绝不妥协”播客的两名经验丰富的开发人员,现在可以为您的 Laravel 项目聘用。 ⬧ 固定费率 7500 美元/月。 ⬧ 没有冗长的销售流程。 ⬧ 没有合同。 ⬧ 100% 退款保证。

绝不妥协
Kirschbaum logo

Kirschbaum

提供创新和稳定性,以确保您的 Web 应用程序取得成功。

Kirschbaum
Shift logo

Shift

运行旧版本的 Laravel?即时、自动化的 Laravel 升级和代码现代化,让您的应用程序保持新鲜。

Shift
Bacancy logo

Bacancy

只需每月 2500 美元,就能让您拥有 4-6 年经验丰富的 Laravel 开发人员,为您的项目提供强大支持。获得 160 小时专用专业知识和 15 天无风险试用期。立即安排通话!

Bacancy
Lucky Media logo

Lucky Media

现在就选择幸运 - 拥有十多年经验,是 Laravel 开发的理想选择!

Lucky Media
Lunar: Laravel E-Commerce logo

Lunar:Laravel 电子商务

Laravel 电子商务。一个开源软件包,将现代无头电子商务功能的强大功能引入 Laravel。

Lunar:Laravel 电子商务
LaraJobs logo

LaraJobs

官方 Laravel 招聘网站

LaraJobs
SaaSykit: Laravel SaaS Starter Kit logo

SaaSykit:Laravel SaaS 启动工具包

SaaSykit 是一个 Laravel SaaS 启动工具包,包含运行现代 SaaS 所需的所有功能。支付、精美结账、管理面板、用户仪表板、身份验证、即用型组件、统计、博客、文档等。

SaaSykit:Laravel SaaS 启动工具包
Rector logo

Rector

您在无缝 Laravel 升级、降低成本和加速创新方面值得信赖的合作伙伴,助力企业取得成功。

Rector
MongoDB logo

MongoDB

通过 MongoDB 和 Laravel 的强大集成,增强您的 PHP 应用程序,使开发人员能够轻松高效地构建应用程序。支持事务性、搜索、分析和移动使用案例,同时使用熟悉的 Eloquent API。了解 MongoDB 灵活性、现代化的数据库如何改变您的 Laravel 应用程序。

MongoDB
Maska is a Simple Zero-dependency Input Mask Library image

Maska 是一个简单、零依赖的输入掩码库

阅读文章
Add Swagger UI to Your Laravel Application image

在您的 Laravel 应用程序中添加 Swagger UI

阅读文章
Assert the Exact JSON Structure of a Response in Laravel 11.19 image

在 Laravel 11.19 中断言响应的精确 JSON 结构

阅读文章
Build SSH Apps with PHP and Laravel Prompts image

使用 PHP 和 Laravel Prompts 构建 SSH 应用程序

阅读文章
Building fast, fuzzy site search with Laravel and Typesense image

使用 Laravel 和 Typesense 构建快速、模糊的网站搜索

阅读文章
Add Comments to your Laravel Application with the Commenter Package image

使用 Commenter 包在您的 Laravel 应用程序中添加评论

阅读文章