BPC 是一个 PHP Native Compiler,可以将 PHP 源码最终转译成 C 语言,然后编译成动态链接库或可执行程序.
BPC 还内置软件授权机制,最终可实现源码保护、软件授权、二进制打包三合一!
彻底解决 PHP 项目的交付问题.
![How BPC Works]( https://bpc.dev/bpc.svg)
1. [官网 bpc.dev]( https://bpc.dev/)
2. [安装使用文档]( https://github.com/bob-php-compiler/bpc-release/wiki/01_Install)
写在前面: bpc 不是一个开源项目,项目历史可以翻看之前的文章和帖子.
## 1. 全面支持 Ubuntu 18.04/20.04/22.04/24.04
近期由于要把公司项目和开发环境升级到 Ubuntu 24.04,所以一并把 BPC 升级了,并且连带着也把 Ubuntu 20.04/22.04 支持了.
这里说 **支持** 是指在 Ubuntu 18.04/20.04/22.04/24.04 操作系统环境下跑通了 [bpc-php-7.2.19-tests]( https://github.com/bob-php-compiler/bpc-php-7.2.19-tests) 测试用例.
[安装使用文档]( https://github.com/bob-php-compiler/bpc-release/wiki/01_Install) 详细说明了 BPC 编译器在这些操作系统上运行所依赖的软件包.
## 2. PHP 语法支持加强
1. 支持 `[1,2,3]` 这种数组的写法,之前需要借助 [phptobpc]( https://github.com/bob-php-compiler/phptobpc) 将 `[1,2,3]` 转换成 `array(1,2,3)`.
2. 忽略函数/方法的返回类型,之前需要借助 [phptobpc]( https://github.com/bob-php-compiler/phptobpc) 将返回类型去掉.
这两个改进主要是为了方便在 Ubuntu 24.04 上使用 php8.3 开发,使用 bpc 编译发布.
## 3. 开放扩展开发
BPC 的扩展开发相比 php 来说要容易很多,比如我自己,到现在还不会开发 php 扩展,只能看一看.
BPC 是使用 [bigloo scheme]( https://www-sop.inria.fr/mimosa/fp/Bigloo/) + C 语言开发的,所以扩展开发也需要 scheme + C.
[bpc-ext-skeleton]( https://github.com/heguangyu5/bpc-ext-skeleton) 可以作为一个扩展模板,在此基础上开发你自己的扩展即可.
## 4. BPC 扩展示例: raylib/raygui
1. [bpc-ext-raylib]( https://github.com/heguangyu5/bpc-ext-raylib)
这个扩展将 [raylib]( https://github.com/raysan5/raylib) 引入到 bpc, 现在可以使用 php 开发简单的 raylib 小游戏了.
2. [bpc-ext-raygui]( https://github.com/heguangyu5/bpc-ext-raygui)
这个扩展将 [raygui]( https://github.com/raysan5/raygui) 引入到 bpc, 可以用它开发简单的 GUI 小工具.
进一步地, [rguilayout]( https://github.com/heguangyu5/rguilayout) 可以通过拖拽生成 GUI 界面,然后导出成 php 代码, bpc 一编译, 一个 GUI 程序就好了.
有些人不喜欢 php+html 混编,我倒是挺喜欢.
BPC 扩展开发过程中,scheme 可以和 C 混编,我也挺喜欢.
如果不喜欢这种混编的形式,那就需要多了解一下 [Bigloo: The C interface]( https://www-sop.inria.fr/mimosa/fp/Bigloo/manual-chapter27.html) 了.
## 5. BPC 相关项目支持 php8.3
我们公司的项目都是 PHPUnit 测试驱动的,测试用例可以有效保障项目平稳安全地升级.
以下项目作为其它 PHP 项目的基础,现已全面支持 bpc 和 php8.3:
1. [bpc-phpunit.phar-4.8.36]( https://github.com/bob-php-compiler/bpc-phpunit.phar-4.8.36)
2. [phpunit-ext]( https://github.com/bob-php-compiler/phpunit-ext)
3. [zf1]( https://github.com/bob-php-compiler/zf1)
4. [phpunit-ext-zend]( https://github.com/bob-php-compiler/phpunit-ext-zend)
也就是说,开发时使用 php8.3 开发,发布时使用 bpc 编译发布. |
|