Read the English version of this document: English
閱讀本文檔其他語言版本: English,簡體中文.
隨著Go和NodeJS的強勢崛起, PHP的市佔率逐漸被蠶食, PHP官方仍堅守在Web程式領域,有些東西越是想守住就越守不住。 polarphp借鑒NodeJS和Go的相關特性對zendVM重新封裝,去掉PHP一些古老棄用的特性和強Web屬性,透過實作一套新的執行時間框架libpdk ,將PHP語言打造為一門真正的通用性腳本語言,賦能PHP ,讓其擁有非同步編程,協程,線程,內建的unicode支持,標準的文件IO等等特性,讓PHP程式設計師不僅能做web應用,也能從容面對真正的服務端應用。 polarphp不是新的語言,而是PHP語言的除官方外的一個新的編譯器及其運行時。
PHP語言標準,移除廢棄語言特性unicode字元標準支援因為開發資源有限,開發計畫暫定如下:
PHP編譯器前端LLVM項目的lit測試框架phplit回歸測試框架完成對polarphp編譯器前端的測試polarvm的指令集,完成虛擬機器的基礎架構polarphp AST 到指令集的編譯,暫時不定義IR 層phplit對語言結構到指令集所有編譯模組的測試PHP內建的GCPHP語言標準函式庫libpdk的底層架構( cpp部分)polarphp的安裝PHP標準函式庫(使用PHP程式碼配合libpdk底層支援進行實作) polarphp專案庫 git clone https://github.com/polarphp/polarphp.git
cd polarphp
git submodule init
git submodule update
git checkout v0.0.1-alpha
./devtools/scripts/build_polarphp.sh
這時候腳本開始編譯相關鏡像,耗時比較長,請您耐心等待。等待編譯完成,您執行:
docker images
這時候請確認在輸出中有以下鏡像:
如果沒有問題,我們開始測試polarphp是否在鏡像中正常運作。
docker run --rm -it polarphp_debug
進入容器後,輸入我們的polarphp命令列程序
polar --version
如果您得到下面的輸出:
polarphp 0.0.1-git (built: 2019-01-27 12:22)
Copyright (c) 2016-2018 The polarphp foundation (https://polar.foundation)
Zend Engine v3.3.0-dev, Copyright (c) 1998-2018 Zend Technologies
恭喜您,您已經成功編譯了polarphp執行環境。 在編譯鏡像的時候,我們在~/temp/資料夾中放入了一個測試腳本
if ( function_exists ( ' phpretrieve_version_str ' )) {
echo " version str: " . php retrieve_version_str () . "n" ;
}
if ( function_exists ( ' phpretrieve_major_version ' )) {
echo " major version: " . php retrieve_major_version () . "n" ;
}
if ( function_exists ( ' phpretrieve_minor_version ' )) {
echo " minor version: " . php retrieve_minor_version () . "n" ;
}
if ( function_exists ( ' phpretrieve_patch_version ' )) {
echo " patch version: " . php retrieve_patch_version () . "n" ;
}您可以運行一下命令:
polar ~/temp/main.php
如果沒有錯誤,您將得到下面的輸出:
version str: polarphp 0.0.1-git
major version: 0
minor version: 0
patch version: 1
感謝您測試polarphp ,有什麼問題,請掃描下面的微信二維碼進群交流。
目前我們暫時只針對中國的用戶,所以採用了微信和QQ群的交流方式,下面是二維碼,有興趣的同學可以掃碼加入:
PS:掃碼請註明來意,例如:學習
polarphp或PHP愛好者
polarphp在php語言專案之上進行二次開發,遵守php專案的協議,詳情請看:專案協議
=============================