一只大脸猫博客主要分享PHP开发技巧、Web前端技术、网站优化、网站排名、修电脑、心灵鸡汤等一些生活中遇到的事、道理和技巧。分享更多知识给身边的朋友。
一只大脸猫博客主要分享PHP开发技巧、Web前端技术、网站优化、网站排名、修电脑、心灵鸡汤等一些生活中遇到的事、道理和技巧。分享更多知识给身边的朋友。

PHP早已不是十年前的鸟样


rent 承认 PHP 当前仍然存在一些问题,比如许多核心函数仍然有不一致的方法签名、配置设置还是令人困惑,但是以他自己的开发经验来看,他认为 PHP 是 Web 开发的绝佳选择,使用 PHP,他可以创建可靠、可维护和高质量的应用,并且自己与客户对最终结果都满意。

文章中 Brent 关注于 PHP 这些年来发展得好的一面,他通过几下几点,说明“PHP 不再是十年前那一门糟糕的语言了”:

● PHP 正在积极开发,每年都会发布新版本

● PHP 5 之后性能在不断提高

● 有非常活跃的框架、包和平台组成的语言生态

● PHP 在不断发展,过去几年中添加了许多新功能

● 各种开发工具在过去几年中已经成熟,并且保持增长

PHP 正在积极开发,每年都会发布新版本

当前 PHP 版本是去年 12 月份发布的 7.3,7.4 预计在今年年底发布,而 PHP 8.0 将是 7.4 之后的下一个版本。

自从 5.X 时代以来,核心团队希望每年发布一个新版本,在过去四年中他们成功维护了这么一个发布周期。通常每个新版本都会得到官方两年时间的积极支持,之后有一年仅提供安全修复,其目的是激励 PHP 开发人员尽可能保持更新。

更加具体的发布与维护周期可以查看 PHP 官网的介绍:

众所周知都知道PHP版本号从 5 跳到了 7,那 PHP 6 去哪里了?

顺便科普一下。其实早在 2005 年,PHP 社区就发起了 PHP 6,但由于实现 Unicode 面临的困难太大,项目最终流产,PHP 官方没有发布 PHP 6 GA,并且在 2010 年将 PHP 6 取消。虽然 PHP 6 项目取消了,但其大量已实现功能集成到了 PHP 5.X 中,包括 OOP 方面的改进,使得 PHP 从面向过程跨越到面向对象。

PHP 6 被取消了,但是之前对这个主要版本的研发都是以 PHP 6 的名义进行的,所以许多参考资料与书籍都是用“PHP 6”来指代该版本。官方担心这在放弃 PHP 6 之后会引起混乱,于是干脆不使用 PHP 6.X 版本号,直接从 5 跳到 7。

PHP 5 之后性能在不断提高

PHP 7.0 中,PHP 核心部分完全重写,带来了最新的 Zend 引擎,使得 PHP 性能提升了两到三倍。

自 7.0 以来,PHP 性能一直在提升,PHP Web 应用与其它语言的 Web 框架相比在一些情况下性能好很多。但他也表示:“当然 PHP 框架不会胜过 C 与 Rust,但比 Rails 或 Django 好得多,与 ExpressJS 相当。”

有非常活跃的框架、包和平台组成的语言生态

提到 PHP 的框架,不得不说 WordPress,但是作者表示 WordPress 绝对不代表当前的 PHP 生态:“PHP 框架再也不仅仅只有 WordPress 了”。

当前 PHP 中有两个主要的 Web 应用开发框架:Symfony 与 Laravel,还有 Zend、Yii、Cake 与 Code Igniter 这些,此外还有不少较小的框架。

Symfony 与 Laravel 都拥有庞大的包和软件生态,包括 admin 面板和 CRM、独立软件包、CI、分析器、Web socket 服务器、队列管理器与支付集成等。

此外,近几年 PHP 异步框架也兴起了,Swoole、Amp 与 ReactPHP 是其中的佼佼者,它们是用 PHP 或其它语言编写的框架和服务器,用来运行真正的异步 PHP。

作者认为衡量 PHP 生态当前状况的一种方法是查看 Packagist 这个 PHP 主要软件包存储库的数据。通过以下趋势图,可以发现软件包数量呈指数增长,并且当前录入软件包有 223 217 个,总的安装量达到了 14 827 204 847,PHP 生态已不再像以前那么弱小。

PHP 在不断发展,过去几年中添加了许多新特性

尽管 async 与 await 这两个呼声极高的特性还没有实现,但是 PHP 这几年新特性不断出现,语言本身得到了各方面的改进。

下边列出了一些关注度比较高的 PHP 新特性:

Short closures

短闭包,也称为箭头函数,这是一种在 PHP 中编写较短函数的方法。将闭包传递给 array_map 或 array_filter 等函数时,它可以发挥极大的作用。

Null coalescing operator

空合并运算符,它类似于三元运算符,但左边的操作数行为类似于 isset,而不是仅使用其布尔值。这使得此运算符对数组特别有用。它同时可在未设置变量时分配默认值。

Traits

Trait 是一种重用代码的机制,它可以减少单继承的某些限制。Traits 与类组合的语义定义了降低复杂性的方式,并避免了与多重继承和 Mixins 相关的典型问题。

Trait 类似于类,但仅用于以细粒度和一致的方式对函数进行分组,它是对传统继承的补充,可以实现行为的横向组合,类成员应用不需要继承。

Typed properties

属性类型化,类变量可以定义类型

Spread operator

扩展运算符,这是一种新语法,可以直接在调用中解压缩参数

直接用新语法可扩展出数组 $params

JIT compiler:PHP 8 中确认支持 JIT

JIT 是一种编译器策略,它将代码表述为一种中间状态,在运行时将其转换为依赖于体系结构的机器码,并即时执行。在 PHP 中,这意味着 JIT 将为 Zend VM 生成的指令视为中间表述,并以依赖于体系结构的机器码执行,也就是说托管代码的不再是 Zend VM,而是更为底层的 CPU。

FFI

Foreign Function Interface,外部函数接口,它允许从纯脚本语言调用 C 函数、使用 C 数据类型,从而更有效地开发“系统代码”。对于 PHP,FFI 开辟了一种使用纯 PHP 编写 PHP 扩展和绑定到 C 库的方法。

Anonymous classes

匿名类,用于创建简单的一次性对象

明天我们进行一一分析


PHP早已不是十年前的鸟样:http://www.yzdlm.com/php/5.html

作者:吕宗国 分类: PHP博客


上一篇:PHP是什么? 下一篇:在线编辑器实现代码高亮展示

评论


乖,登录后才可以留言!
QQ一键登录
Top