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