Zeev Suraski 便是几周前爆出的 PHP 核心开拓者从 Zend 公司离职里面的主角。Zeev 因此色列的开拓者。它也是 Zend 公司的联合创始人。上岸它的 twitter 上看,它的 twitter 封面有个可爱的女儿,看来外国人也是很爱在社交账号晒女儿的。
实在 PHP 现在大都由社区进行掩护了,Zeev 的离职并不一定会有多少影响。
但是这次 Zeev Suraski 在社区中提的这个方案就引起了不少的反响。https://wiki.php.net/pplusplus/faq。 我们可以通过里面的internal邮件 https://marc.info/?l=php-internals&m=156529545007909&w=2 查看全体邮件线。

Zeev 的这封邮件的标题很故意思: Bringing Peace to the Galaxy。它希望这个idea 能给社区的强弱类型的争端带来和平,希望能办理强弱类型问题的辩论。
基本上 Zeev 是从如何发展 PHP 的角度考虑。现在 PHP 最大的不合便是是掩护动态措辞,还是逐渐加入强类型的特性。基本上,如果要增加一些静态措辞的类型声明和验证,PHP 的向下兼容性是得不到担保的。但是随着 Rust, Go 等措辞的冲击,有一部分开拓者逐渐方向于利用一些强类型的特性。
那么 Zeev 就认为,与其不断在现有的 PHP 版本上对每个特性谈论强弱类型的兼容性,我不如让 PHP 可以支持其余一种“新语法” P++。当然这个 P++ 只是暂定的。在 Zeev 的思考中,它认为 P++ 是一种增强型措辞,但是和 PHP 是共存的。它们的调用关系便是 C 和 C++ 的关系,C++ 并不对 C 的所有语法兼容,而是C++ 中是可以调用 C 代码的。换句话说,它以为我们可以在一个代码文件中共存两种语法的代码段。可能示例如下:
<?phpxxx?><?p++?>
这样做的好处有几个,首先 PHP 的适用人群扩大了,它知足了不同开拓者的不同口味。其次,一些新的特性不用再考虑向下兼容性了。在 P++ 中开拓的特性即是是从头开始开拓,并不须要考虑 PHP 多少版本的历史兼容问题。会解放新特性的开拓进度。
以是说,Zeev 并不是要开拓一个新措辞,也不是要从 PHP 分支 fork 出一个分支,更像是要创建一种新的语法分支,这个分支我理解紧张是针对强类型限定的。而这个语法分支和原来的 PHP 是在同一份代码内。并且随着每次 PHP 的版本,原来弱类型的 PHP和 新类型的 P++ 都会进行修复和增加。
另一种方案但是紧随着 Zeev 的这个邮件,Nikita Popov 回答了这个邮件,它提出了反对的声音,并且提出了自己的办理方法。
Nikita 的办理方法是参照 Rust 的版本管理,Rust 基本 2-3 年发布一个大版本,但是 Rust 的编译器能编译所有版本的代码,以是每次发布新版本的时候,如果你的代码是旧版本的,那么还可以连续编译,且不会和新特性有冲突。 https://doc.rust-lang.org/edition-guide/editions/index.html#what-are-editions。Rust 到如今有两个大版本了,2015版本和2018版本。
可以想象,如果引入 Nikita 的这种办法,须要在每个代码文件中(或者粒度更细,到代码块)中标记 PHP 的大版本版本号,比如用年号作为大版本号,今年2019是初版本,也是默认版本,过两年2021是第二版本。
Nikita 的这种办法目的是保持单一的 PHP 的语法分支,并且新特性也是不须要考虑向下兼容问题。比如假设有2019版本和2021两个 PHP版本。2021版本中措辞的新特性在2019版本中是无法利用的。如果你想要利用这些新版本,开拓者须要主动做升级修正。(可以想象到时候会有一些自动升级的脚本)。但是如果你不想要修正,那么就在你的所有文件(或者配置)中解释我的项目利用的是2019版本(纵然你现在利用的是 PHP 程序的版本是2021)。
后续这封邮件后续的反馈基本都是针对这两种方案展开的。Zeev 的方案基本的缺陷便是须要掩护两个措辞特性的分支,对付有限的措辞开拓者资源来说,是很吃力的。不少人会担心末了演化成为 Python2 和 Python3 的现状,长期无法合并。而且须要开拓者在是利用PHP 语法还是P++ 语法做选择。而 Nikita 的方案更有版本迭代的意味。
我个人更站边 Nikita的这种升级,我以为这种方案会有一种趋向性,终极大家会逐渐升级到新版本。且更随意马虎落地,开拓者只须要掩护一套措辞特性(比较于 Zeev 的方案更随意马虎落地)。而 Zeev 的这种方案总是会给人一种老版本的 PHP 不想再去增加新特性,所有新特性都加在 P++ 这边更好的觉得。渐行渐远,我觉得终极还真会演化成大家都在开拓新措辞的态势。