この文書の英語版を読む: 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
プロジェクト契約を遵守します。詳細については、「プロジェクト契約」を参照してください。
===========================