BPC是一個PHP Native Compiler,可以將PHP源碼最終轉譯成C語言,然后編譯成動態(tài)鏈接庫或可執(zhí)行程序.
BPC還內(nèi)置軟件授權機制,最終可實現(xiàn)源碼保護、軟件授權、二進制打包三合一!
徹底解決PHP項目的交付問題.
寫在前面: bpc不是一個開源項目,項目歷史可以翻看之前的文章和帖子.
近期由于要把公司項目和開發(fā)環(huán)境升級到Ubuntu 24.04,所以一并把BPC升級了,并且連帶著也把 Ubuntu 20.04/22.04 支持了.
這里說 支持 是指在 Ubuntu 18.04/20.04/22.04/24.04 操作系統(tǒng)環(huán)境下跑通了 bpc-php-7.2.19-tests 測試用例.
安裝使用文檔 詳細說明了BPC編譯器在這些操作系統(tǒng)上運行所依賴的軟件包.
[1,2,3]
這種數(shù)組的寫法,之前需要借助 phptobpc 將 [1,2,3]
轉換成 array(1,2,3)
.這兩個改進主要是為了方便在Ubuntu 24.04上使用php8.3開發(fā),使用bpc編譯發(fā)布.
BPC的擴展開發(fā)相比php來說要容易很多,比如我自己,到現(xiàn)在還不會開發(fā)php擴展,只能看一看.
BPC是使用 bigloo scheme + C 語言開發(fā)的,所以擴展開發(fā)也需要 scheme + C.
bpc-ext-skeleton 可以作為一個擴展模板,在此基礎上開發(fā)你自己的擴展即可.
這個擴展將 raylib 引入到bpc, 現(xiàn)在可以使用 php 開發(fā)簡單的 raylib 小游戲了.
這個擴展將 raygui 引入到bpc, 可以用它開發(fā)簡單的GUI小工具.
進一步地, rguilayout 可以通過拖拽生成GUI界面,然后導出成php代碼, bpc一編譯, 一個GUI程序就好了.
有些人不喜歡php+html混編,我倒是挺喜歡.
BPC擴展開發(fā)過程中,scheme可以和C混編,我也挺喜歡.
如果不喜歡這種混編的形式,那就需要多了解一下 Bigloo: The C interface 了.
我們公司的項目都是PHPUnit測試驅動的,測試用例可以有效保障項目平穩(wěn)安全地升級.
以下項目作為其它PHP項目的基礎,現(xiàn)已全面支持bpc和php8.3:
也就是說,開發(fā)時使用php8.3開發(fā),發(fā)布時使用bpc編譯發(fā)布.
之前在編譯wordpress時嘗試過centos7,發(fā)現(xiàn)它的libc版本太低了,然后就沒再試了.
理論上來說,linux-x64應該都可以,就是要解決軟件包依賴,然后編譯測試一下.
普通人搭建不起來,沒法用