TypePHP 编译器
https://swoole.com/aot/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2.0 KiB
2.0 KiB
不支持的 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
常见设计规则
- 游离可执行代码:文件顶层的可执行语句(循环、函数调用)不被允许,必须放在
main()或函数体内; - 固定值类型属性不可
unset/赋null:见 原生类型映射; - 显式返回类型:函数/方法必须声明返回类型(
parseFunctionDecl()会fatalError)。
Sources: docs/QUICKSTART.md · src/Preprocessor.php
维护约定
- 兼容性变化须同时更新
INCOMPATIBLE_PHP_FEATURES.md与分类文档; - 所有语法/语义限制统一链接到当前兼容性清单,避免重复;
- 功能是否支持以 PHPT / PHPUnit 回归测试 为准;
- 历史研究文档(hhvm/kphp/peachpie 对比等)保留原始结论,不悄然改写为当前状态。
Sources: docs/README.md
相关阅读
- 运行期能力边界 → PHPX 运行时集成
- 类型约束 → 原生类型映射
- 属性/类约束 → 函数与类生成