17611538698
webmaster@21cto.com

PHP 小组添加管道运算符,正考虑泛型支持

编程语言 0 19 1天前
图片

导读:PHP继续向前快速发展,近日PHP小组将给该语言添加管道运算符以及泛型等支持。

PHP 开发小组正在考虑在语言中添加泛型的部分实现,并已确认管道运算符将出现在即将发布的 8.5 版本中,并且已确认正式将 FrankenPHP 应用服务器纳入 PHP 基金会。

PHP 最初曾代表“个人主页(Personal Home Pages)”,由发明者勒多夫 Rasmus Lerdorf 于 1995 年 6 月首次发布。

30 年来,PHP的使用率不断增长,它为超过 70%使用服务器端编程的网站提供支持(这在很大程度上要归功于 WordPress 和其他的内容管理系统),并且该编程语言正在获得重要的新功能。

图片

上个月,PHP 基金会报告了PHP 8.5 中引入管道运算符的消息,预计将于 11 月发布。该运算符将表示为 |>,并将左侧的值作为参数传递给右侧的函数。

如下代码示例:

$result = "Hello World" |> strlen(...)// Is equivalent to$result = strlen("Hello World");

这样可以链接起来形成管道,从而实现比嵌套括号更简洁的编程,并且可读性更强。PHP 8.5 中的管道运算符与 F# 中的实现类似。

根据 PHP-FIG(框架互操作组)核心委员会成员 Larry Garfield 的帖子所说,管道运算符的工作也可能支持部分函数应用,这是函数式编程语言的一个常见特性。

$arr = [  new Widget(tags: ['a''b''c']),  new Widget(tags: ['c''d''e']),  new Widget(tags: ['x''y''a']),];$result $arr    |> fn($x) => array_column($x'tags'// Gets an array of arrays    |> fn($x) => array_merge(...$x)       // Flatten into one big array    |> array_unique(...)                  // Remove duplicates    |> array_values(...)                  // Reindex the array.;// $result is ['a', 'b', 'c', 'd', 'e', 'x', 'y']

还有一个新消息是,编译时泛型正在考虑中,但目前仅限于接口和抽象类,并已经向社区征求反馈意见。

目前为止,PHP社区的反馈褒贬不一,其中一条高赞评论认为,部分实现泛型将意味着“PHP 将永远停留在一个半成品功能上,甚至可能覆盖不到其使用量的 50%”。 

目前,已经可以使用PHPStanPsalm来模拟泛型,它们是广泛使用的支持模板注释的静态分析工具。

另一个 PHP 最新进展是,FrankenPHP应用服务器已被支持 PHP 开发的 PHP 基金会采用,并成为GitHub 上 PHP 官方组织的一部分

FrankenPHP 采用 Go 语言编写,将 PHP 执行器与Caddy Web 服务器相结合,从而提升了 PHP 应用程序的性能,并保留了 Caddy 的诸多优势,例如自动 TLS 证书。

PHP 最初的成功源于其作为动态类型语言的简洁性,以及每个网站托管商都提供该语言运行环境的事实,使其成为业余爱好者和创业型企业开发者的最爱。PHP 仍然可以以自由的方式使用,但现代 PHP 增加了一些新功能,例如稳步改进的严格类型和 JIT(即时)编译器,这些功能自 2020 年 PHP 8.0 开始提供。

另据 StackOverflow 最近的一项调查,PHP 的总体使用率为 18.9%,专业开发人员的使用率为 19.1%,同比略有增长。最受欢迎的 PHP 框架(除 WordPress 外)是Laravel,其使用率为 8.9%(其涵盖所有技术),高于 2024 年的 7.9%。

PHP 仍然受到许多网站使用旧版本的事实影响:根据 w3techs 网站的统计, 48.1% 的网站在使用 PHP 7,超过 10% 的网站仍在使用 PHP 5,而 PHP 5 的支持已于 6 年前结束。尽管我们猜测这些网站中有许多规模很小或已被废弃。

尽管如此,与 Ruby on Rails 和基于 Python 的 Web 框架一样,PHP 可能会受益于对 JavaScript 或 TypeScript 概念感到失望的开发者们。

作者:洛逸

评论