导读: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%”。
目前,已经可以使用PHPStan或Psalm来模拟泛型,它们是广泛使用的支持模板注释的静态分析工具。
另一个 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 概念感到失望的开发者们。
作者:洛逸
本文为 @ 场长 创作并授权 21CTO 发布,未经许可,请勿转载。
内容授权事宜请您联系 webmaster@21cto.com或关注 21CTO 公众号。
该文观点仅代表作者本人,21CTO 平台仅提供信息存储空间服务。