web-dev-qa-db-ja.com

PHP= C ++コードに変換

PHPコードをC++に変換する方法を探しています。そうする理由がいくつかあります。

主な理由:たくさんの素晴らしいPHP使用してC++ GUIまたは非GUIアプリケーションに組み込みたいツール/ソフトウェアがあります

  1. パフォーマンスを向上させるには
  2. PHPライブラリへの依存を回避するには
  3. 共有ホスティング環境でソースコードを開示しないようにするには
  4. C++言語機能によって強化され、Qt C++やPocoなどのフレームワークを利用する

これまでのところ、私は見つけました:

http://sourceforge.net/projects/binaryphp

http://www.mibsoftware.com/php2cpp/

知っているアイデアやツールを共有してください。前もって感謝します!

EDIT:また、クロスプラットフォームでの操作性と、$$、構文シュガー関数、およびインターフェイスとの良好な一致が必要です。

EDIT:前述の2つのツールは2つの異なるアプローチを使用していることに注意してください。前者には、PHP手続きコードを変換して実行する組み込みライブラリがあります。後者は、(Word by Word)をPHPからC++に変換します。

37
Viet

これはすぐに興味深いものになるかもしれません:

https://developers.facebook.com/blog/post/2010/02/02/hiphop-for-php--move-fast/

これは、facebookを存続させるものです;)PHPをC++に変換およびコンパイルし、オープンソースに移行するテクノロジー。私はそれが本当によくテストされると期待しています。

26
naugtur

なぜあなたがこれを行う必要があると思うのかという文脈を完全には理解していないかもしれませんが、あなたが投稿した理由が特に説得力があるとは思いません。

  1. CPUにバインドされているウェブアプリはそれほど多くないため、パフォーマンスの向上に感心されることはないと思います。ネイティブコードにコンパイルしても、I/OやDBの待ち時間は短くなりません。 WebアプリをC++に移行するよりも優れたスケーリング方法があり、そのほとんどは、スクリプトがDBまたはディスクからのデータを待機する時間を短縮することを含みます(DBのシャーディングやRAMへのデータの移動など) _キャッシュ)。

  2. ライブラリの依存関係は本当に問題なのでしょうか?最も人気のあるライブラリの多くは現在PHPコアにバンドルされており、追加のライブラリは一般に簡単にインストールできます。一度取得したら、それらに触れないので、なぜこれがC++に移行する特に説得力のある理由なのかわかりません。

  3. これは実際、C++に移行する非常に悪い理由です。ほとんどの共有ホスティング環境では、PHP環境でスクリプトを実行できますが、VPSを使用している場合を除き、ごくわずかな環境でC++のような任意のバイナリを実行できます。アプリ。ファイル許可を正しく使用するなど、共有環境でソースの可読性を制御するより良い方法があります。クライアントがPHPコードを盗むのを心配しているのなら、それはあまりにも悪いことです。あなたはそれをあなたが望むすべてを難読化しようとすることができますが、それは一般的に一日の終わりには無意味です。

  4. PHPが提供しない特定のC++機能がどうしても必要なのですか?正直に言うと、平均的なPHPコーダーがポインターとメモリ割り当てをいじっているという考えは、私を驚かせます。 PHPには非常に優れたフレームワークが用意されています。特定のフレームワークで好きな機能だけを使用してコードベース全体の言語を変更する前に、これらのオプションをすべて使い切ることをお勧めします。

  5. あなたはコメントでクロスプラットフォームの互換性について言及しました... PHPはC++よりも簡単にこれを簡単にします。 PHP実装は、プラットフォーム間で比較的標準化されています(いくつかの低レベル関数を除く)が、C++で異なるコンパイラーとシステム呼び出しを使用する可能性があります。

37
Bob Somers

多くの研究の結果、 http://www.phpcompiler.org/doc/maketea.pdf および http://rosecompiler.org/ROSE_Tutorial/ROSE-0.9.4a -Tutorial.pdf 。 PHPソースコードを解析してからXMLに変換できるため、C++への変換はXSLTの問題です。さらに、PHPCompilerは、プラグインとソースコードのさまざまな変換(AST変換に基づく)もサポートしています。今のところこれで十分だと思います。

いくつかの追加の参照:

  1. http://www.phpcompiler.org
  2. http://www.phpcompiler.org/doc/latest/devintro.html
  3. http://rosecompiler.org
  4. http://rosecompiler.org/ROSE_UserManual/ROSE-UserManual.pdf

ディスカッションに参加してくれてありがとう!

8
Viet

Facebookヒップホップはしばらくオープンしています: https://github.com/facebook/hiphop-php/

8
bslima

1-3はZend Compilerで実現できます

http://www.zend.com/en/

Qt C++はデスクトップUIフレームワークではないため、4は少し奇妙です。

3
Nick Berardi