贡献指南
感谢你能够看到这里,本项目非常欢迎你的贡献!
贡献方法
如果你有代码或文档要贡献,以下是你需要首先了解的内容。
- 你要贡献什么类型的代码?(新扩展、修复 Bug、安全问题、项目框架优化、文档)
- 如果你贡献了新文件或新片段,你的代码是否经过
php-cs-fixer
和phpstan
的检查? - 在贡献代码前是否充分阅读了 开发指南?
如果你能回答上述问题并对代码进行了修改,可以及时在项目 GitHub 仓库发起 Pull Request。 代码审查完成后,可以根据建议修改代码,或直接合并到主分支。
贡献类型
本项目的主要目的是编译静态链接的 PHP 二进制文件,命令行处理功能基于 symfony/console
编写。 在开发之前,如果你对它不够熟悉,请先查看 symfony/console 文档。
安全更新
因为本项目基本上是一个本地运行的 PHP 项目,一般来说不会有远程攻击。 但如果你发现此类问题,请不要在 GitHub 仓库提交 PR 或 Issue, 你需要通过 邮件 联系项目维护者(crazywhalecc)。
修复 Bug
修复 Bug 一般不涉及项目结构和框架的修改,所以如果你能定位到错误代码并直接修复它,请直接提交 PR。
新扩展
对于添加新扩展,你需要了解项目的一些基本结构以及如何根据现有逻辑添加新扩展。 这将在本页的下一节中详细介绍。 总的来说,你需要:
- 评估扩展是否可以内联编译到 PHP 中。
- 评估扩展的依赖库(如果有)是否可以静态编译。
- 编写不同平台的库编译命令。
- 验证扩展及其依赖项与现有扩展和依赖项兼容。
- 验证扩展在
cli
、micro
、fpm
、embed
SAPIs 中正常工作。 - 编写文档并添加你的扩展。
项目框架优化
如果你已经熟悉 symfony/console
的工作原理,并同时要对项目的框架进行一些修改或优化,请先了解以下事情:
- 添加扩展不属于项目框架优化,但如果你在添加新扩展时发现必须优化框架,则需要先修改框架本身,然后再添加扩展。
- 对于一些大规模逻辑修改(例如涉及 LibraryBase、Extension 对象等的修改),建议先提交 Issue 或 Draft PR 进行讨论。
- 在项目早期,它是一个纯私有开发项目,代码中有一些中文注释。项目国际化后,你可以提交 PR 将这些注释翻译为英语。
- 请不要在代码中提交更多无用的代码片段,例如大量未使用的变量、方法、类以及多次重写的代码。