この文書の英語版を読む: English
このドキュメントは他の言語でもお読みいただけます: 英語、簡体字中国語。
GoとNodeJSの台頭により、 PHPの市場シェアは徐々に侵食されてきましたが、 PHP公式にはまだWebプログラミングの分野に固執しており、保持しようとすればするほど保持するのが困難になるものもあります。 polarphp 、 NodeJSとGoの関連機能を利用してzendVM再カプセル化し、 PHP古い放棄された機能と強力なWeb属性の一部を削除し、新しいセットのランタイム フレームワークlibpdkを実装してPHP言語を真のユニバーサル スクリプト言語に構築し、強力な機能を提供します。非同期プログラミング、コルーチン、スレッド、組み込みunicodeサポート、標準ファイルIOなどの機能を備えたPHPにより、 PHPプログラマーはwebアプリケーションを実行するだけでなく、実際のサーバーサイド アプリケーションにも冷静に取り組むことができます。 polarphpは新しい言語ではありませんが、公式のものに加えて、 PHP言語用の新しいコンパイラーとランタイムです。
PHP言語標準と互換性があり、廃止された言語機能を削除しますunicode文字標準のサポート開発リソースが限られているため、開発計画は暫定的に次のように設定されます。
PHPコンパイラ フロントエンドを実装するLLVMプロジェクト移植用のlitテストフレームワークphplit回帰テスト フレームワークを使用して、 polarphpコンパイラ フロントエンドのテストを完了するpolarvmの命令セットを定義し、仮想マシンのインフラストラクチャを完成させるpolarphp AST の命令セットへのコンパイルを完了し、当面は IR 層を定義しません。phplit使用して、言語構造から命令セットまですべてのコンパイル済みモジュールをテストしますPHPの組み込みGC一時的に使用して、最小限のランタイムを実装します。PHP言語標準ライブラリlibpdkの基礎となるアーキテクチャを実装します( cpp部分)polarphpインストールするようにしてください。PHP標準ライブラリ ( libpdk基礎となるサポートを備えたPHPコードを使用して実装) を実装します。 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 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テストしていただきありがとうございます。ご質問がある場合は、以下の WeChat QR コードをスキャンしてグループ コミュニケーションに参加してください。
現時点では、中国のユーザーのみを対象としているため、WeChat とQQグループを使用してコミュニケーションを行っています。興味のある学生は、コードをスキャンして参加できます。
PS: QR コードをスキャンするときに訪問の目的を示してください (例:
polarphp学習やPHP愛好家)
polarphp php言語プロジェクトに基づいて二次開発を実施し、 phpプロジェクト契約を遵守します。詳細については、「プロジェクト契約」を参照してください。
===========================