不支持的 PHP 特性

AOT 编译对 PHP 运行时做了静态化假设,因此并非所有 PHP 特性都可编译。遇到编译报错(如 Not implemented)时,应据此清单判断是设计限制、有意规则,还是尚未实现。

Sources: docs/INCOMPATIBLE_PHP_FEATURES.md · docs/PHP_INCOMPATIBILITY_CLASSIFICATION.md

不兼容分类

PHP_INCOMPATIBILITY_CLASSIFICATION.md 把限制分成四类,避免维护多份清单:

类别含义
Hard Limit架构上无法支持(如依赖运行时动态加载的特性)
Intentional Rule有意为之的设计规则(如可执行代码必须放进 main()
Pending计划支持但尚未实现
Partial部分支持,有约束条件

Sources: docs/PHP_INCOMPATIBILITY_CLASSIFICATION.md

常见设计规则

Sources: docs/QUICKSTART.md · src/Preprocessor.php

维护约定

  1. 兼容性变化须同时更新 INCOMPATIBLE_PHP_FEATURES.md 与分类文档;
  2. 所有语法/语义限制统一链接到当前兼容性清单,避免重复;
  3. 功能是否支持以 PHPT / PHPUnit 回归测试 为准;
  4. 历史研究文档(hhvm/kphp/peachpie 对比等)保留原始结论,不悄然改写为当前状态。

Sources: docs/README.md

相关阅读