這篇文章主要介紹“PHP編譯器BPC6.0的新功能有哪些”,在日常操作中,相信很多人在PHP編譯器BPC6.0的新功能有哪些問題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”PHP編譯器BPC6.0的新功能有哪些”的疑惑有所幫助!接下來,請(qǐng)跟著小編一起來學(xué)習(xí)吧!
創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供江川網(wǎng)站建設(shè)、江川做網(wǎng)站、江川網(wǎng)站設(shè)計(jì)、江川網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)與制作、江川企業(yè)網(wǎng)站模板建站服務(wù),10多年江川做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
前些天看到 nikic/PHP-Parser 的 文檔, 發(fā)現(xiàn)PHP的namespace可以很容易地轉(zhuǎn)化.
于是就照著文檔寫了一個(gè) phptobpc.php, 借助這個(gè)小程序,可以將使用namespace的PHP代碼轉(zhuǎn)為沒有namespace的.
當(dāng)然BPC自身也做了相應(yīng)的支持,這樣動(dòng)態(tài)調(diào)用也沒問題.比如:
<?php
$classname = '\\Foo\\Bar\\Baz';
$o = new $classname;
我把這個(gè)程序打包成 phptobpc.phar, 下載回來 chmod +x
就能使用.
BPC之前就已經(jīng)支持簡(jiǎn)單的匿名函數(shù),比如:
<?php
$a = array(1,2,3);
usort($a, function ($a, $b) { ... });
BPC 6.0完善了closure實(shí)現(xiàn),支持use,typehint,default value等特性,比如:
<?php
$a = 1;$b = 2;
$f = function (array $arg1, &$arg2, $arg3 = 1) use ($a, &$b) { ... };
之前有網(wǎng)友說能不能把 workerman 整個(gè)編譯起來.
現(xiàn)在支持了 namespace 和 closure, 正好可以編譯 workerman 試一試.
由于編譯后執(zhí)行和PHP解釋執(zhí)行還是有一些區(qū)別,要想成功編譯和運(yùn)行,需要對(duì)workerman的代碼做一些微調(diào).
整體來說,調(diào)整量很小.感興趣的可以去查看 git commit .
由于 workerman 沒有 unit tests, 我們自己也沒有 workerman 的項(xiàng)目,所以不好做完整的驗(yàn)證.
但我照著 workerman手冊(cè), 寫了以下幾個(gè)例子:
start.php
ws_test.php
tcp_test.php
SimpleChat.php
BinaryTransfer.php
TextTransfer.php
運(yùn)行起來,測(cè)試了一下,沒有問題.
start
start -d
stop
restart
status
connections
這些命令都OK.
但是由于編譯后只有一個(gè)二進(jìn)制文件,reload
顯然是達(dá)不到預(yù)期效果的.
這幾個(gè)例子我都靜態(tài)編譯出來了,想動(dòng)手試一下的直接 下載 回來 gunzip
然后 chmod +x
執(zhí)行即可 (注意只能在ubuntu 18.04上運(yùn)行).
想自己動(dòng)手編譯的,參看 src/Makefile 和 examples/build.sh
BPC是否開源?
BPC是我們公司的內(nèi)部項(xiàng)目,不打算開源.
商業(yè)化策略還未確定,在正式商業(yè)化前,我們每次release都會(huì)帶一個(gè)約7天的試用license,如果過期了還想試用,只要給我們發(fā)個(gè)郵件我們就會(huì)再給license.
如果想要就此項(xiàng)目進(jìn)行深度合作,可以發(fā)郵件到 YnBjQG91cmF0cy5jb20=
BPC 和 VKCOM/kphp 以及 peachpiecompiler/peachpie 有什么區(qū)別?
BPC的目標(biāo)是源碼保護(hù)和軟件授權(quán)(最終編譯為C),在此基礎(chǔ)上盡可能和PHP兼容,也就是說,一個(gè)php腳本最好什么都不改就能編譯成二進(jìn)制.
kphp的目標(biāo)是性能(編譯為C++),為此,它僅支持 limited subset of PHP, 參看 KPHP vs PHP differences
peachpie的目標(biāo)也是性能(編譯為C#),同時(shí)將.NET引進(jìn)來了.
BPC 和 Zend Guard, ionCube 以及 Swoole Compiler 有什么區(qū)別?
Zend Guard, ionCube和Swoole Compiler都是在PHP opcode的基礎(chǔ)上進(jìn)行源碼保護(hù)的.
BPC應(yīng)該來說和它們不是一類東西,只是目標(biāo)相同罷了,BPC和kphp peachpie算是一類.
到此,關(guān)于“PHP編譯器BPC6.0的新功能有哪些”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!
文章題目:PHP編譯器BPC6.0的新功能有哪些
轉(zhuǎn)載源于:http://jinyejixie.com/article16/pgijdg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護(hù)、品牌網(wǎng)站設(shè)計(jì)、軟件開發(fā)、做網(wǎng)站、網(wǎng)站收錄、Google
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)