一种新的PHP方言,代号为P ++,可以作为其动态前身的更严格的变体而开发,具有更高级的功能和更少的包袱。这个提议由PHP联合创始人Zeev Suraski 在PHP社区中提出,它将拥有P ++,或者最终被称为它的任何东西,与PHP一起生活,但不受PHP历史哲学的束缚。P ++不会是一个分支,但它本质上会更严格,并且可能会更加大胆,具有向后兼容性。
现在被认为是“行李”的元素,例如短标签,可以被删除,而复杂的特征,特别是严格类型的语言,如严格的运算符或类型变量,可以添加,而不会给PHP方言带来相同的复杂性。
与PHP本身一样,P ++主要用于服务器端Web开发。计划中的PHP 8版本预计将PHP扩展到Web开发之外,具有即时引擎和与C / C ++库的互操作性。
PHP和P ++中的绝大多数代码都是相同的。大多数代码将在源代码和运行时在PHP和P ++节点之间共享。但他们会有不同的实现。二进制文件将完全相同。
目前尚不清楚的是如何将文件标记为P ++文件。它可能在顶部有一个特殊的标题。构建者还可以找到将整个名称空间标记为P ++的方法,因此框架不必将每个文件标记为P ++。
无论文件是作为PHP还是P ++执行,数据结构,Web服务器接口,关键子系统以及其他大多数都将是完全相同的代码。但是,必须维护某些代码片段的两个版本。与PHP相比,P ++可能会有额外的检查。开发人员可以在同一个应用程序中混合搭配PHP和P ++。两种方言都可以在一台服务器上运行。
如果P ++发生,那将意味着PHP的不同演变。严格和类型相关的功能可能会在P ++中出现。向后兼容的偏差将保留在PHP中。P ++和PHP都可以提供不相关的功能,例如引擎的性能改进或扩展的开发。
Zuraski指出了P ++语言的潜在选择:
坚持使用动态PHP,这是一种更严格的语言支持者不会接受的。
向更严格的PHP发展,不支持更动态语言的支持者。
分配代码库,为所涉及的每个人带来净损失。
设计一个迎合两个受众的解决方案,这是P ++提案的尝试。
对P ++提案的担忧包括:
将PHP代码转换为P ++并不是一件容易的事。这是多么真实取决于最终在P ++中的结果。
PHP工具不支持P ++。但是供应商支持P ++而不是支持粒度declare()或无限量版本可能更简单。
打破PHP兼容性。但是通过一种新的方言而不是打破PHP本身这样做可能会更加可口。
P ++与Facebook的Hack语言不同,后者是基于PHP构建的,其中:
Hack是由一家公司开发的。
Hack和随附的HHVM虚拟机没有PHP的大型分发工具。