2009-07-07 14 views
36

Ich bin auf der Suche nach einer Möglichkeit, PHP-Code in C++ zu konvertieren. Es gibt ein paar Gründe, warum ich so tun wollen:Convert PHP in C++ Code

Hauptgrund: Es gibt Haufen von großen PHP-Tools/Software, die ich lieben würde zu verwenden und integrieren in C++ GUI oder Nicht-GUI-Anwendungen

  1. Um die Leistung zu steigern
  2. Um die Abhängigkeit von PHP-Bibliotheken zu vermeiden
  3. zu vermeiden Um Quellcode auf Shared-Hosting-Umgebungen
  4. Lage versetzt zu werden, von C++ Sprachfunktionen Offenlegung und Nutzung von Frameworks wie Qt C++ machen und Poco

Bisher habe ich gefunden:

http://sourceforge.net/projects/binaryphp

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

Bitte teilen Sie Ihre Ideen und Tools, die Sie kennen. Vielen Dank im Voraus!

EDIT: Ich brauche auch plattformübergreifende Bedienbarkeit und gute Übereinstimmung für $$, syntaktische Zucker Funktionen und Schnittstelle.

EDIT: Bitte beachten Sie, dass 2 der oben genannten Tools 2 verschiedene Ansätze verwenden. Der erste hat eingebaute Bibliotheken, um PHP-Code zu konvertieren und ihn laufen zu lassen. Letzteres übersetzt (Wort für Wort) von PHP nach C++.

+6

Sieht aus wie Sie Ihre eigene Frage beantwortet. –

+0

brauche ich extra :) Die sind noch nicht ausreichend. Wie behandelt man Fälle wie $$ oder Interface? Ich versuche zu vermeiden, meinen eigenen Code zu schreiben. Ich strebe auch die plattformübergreifende Interoperabilität an. – Viet

+2

PHP ist bereits plattformübergreifend interoperabel. Wenn Sie versuchen, Ihren eigenen Code zu schreiben, warum versuchen Sie, ihn in C++ zu konvertieren? –

Antwort

37

Vielleicht kann ich den Kontext, warum Sie denken, dass Sie dies tun müssen, nicht ganz nachvollziehen, aber ich denke nicht, dass die Gründe, die Sie gepostet haben, besonders überzeugend sind.

  1. Nicht viele Web-Anwendungen sind CPU-gebunden, daher glaube ich nicht, dass Sie vom Leistungsschub beeindruckt sein werden. Das Kompilieren auf nativen Code wird Ihre E/A- oder DB-Wartezeiten nicht kürzer machen. Es gibt bessere Möglichkeiten, eine Webanwendung zu skalieren, als nach C++ zu wechseln. Bei den meisten wird die Zeit reduziert, die Ihr Skript auf Daten von der Datenbank oder Festplatte wartet (z. B. das Sharding Ihrer Datenbank oder das Verschieben von Daten in einen RAM-Cache).

  2. Sind die Bibliotheksabhängigkeiten wirklich so ein Problem? Viele der beliebtesten Bibliotheken sind jetzt mit dem PHP-Kern gebündelt, und zusätzliche sind in der Regel ein Kinderspiel zu installieren. Sobald Sie sie haben, berühren Sie sie nicht, also bin ich nicht sicher, warum dies ein besonders zwingender Grund ist, zu C++ zu wechseln.

  3. Dies ist eigentlich ein sehr schlechter Grund, um nach C++ zu verschieben. Die meisten Shared Hosting-Umgebungen lassen Sie Skripte in einer PHP-Umgebung ausführen, aber sehr wenige bis keine (es sei denn, Sie schauen auf ein VPS) können Sie eine beliebige Binärdatei ausführen, wie Sie mit einer C++ App haben. Es gibt bessere Möglichkeiten, die Lesbarkeit von Quellen in freigegebenen Umgebungen zu steuern, z. B. die korrekte Verwendung von Dateiberechtigungen. Wenn Sie befürchten, dass Clients Ihren PHP-Code stehlen, dann schade. Sie können versuchen, alles zu verschleiern, was Sie wollen, aber es ist im Allgemeinen am Ende des Tages sinnlos.

  4. Welche speziellen C++ - Funktionen benötigen Sie so dringend, dass PHP nicht zur Verfügung steht? Um ehrlich zu sein, erschreckt die Idee, dass ein durchschnittlicher PHP-Codierer mit Zeigern und Speicherzuweisungen herumstolpert, das Schreck aus mir heraus.Es gibt sehr gute Frameworks für PHP, und ich würde vorschlagen, dass Sie all diese Optionen vollständig erschöpfen, bevor Sie die Sprache Ihrer gesamten Codebasis ändern, nur für einige Funktionen, die Sie in einem bestimmten Framework mögen.

  5. Sie erwähnten plattformübergreifende Kompatibilität in Ihrem Kommentar ... PHP wird ehrlich gesagt einfacher machen als C++ ist. Die PHP-Implementierung ist relativ plattformübergreifend (mit Ausnahme einiger untergeordneter Funktionen) standardisiert, während Sie wahrscheinlich einen anderen Compiler und Systemaufrufe in C++ verwenden werden.

+2

Mit 5.3.0 veröffentlicht viele der unteren Ebene Funktionen, von denen ich denke, dass Sie reden, wurden mit Windows, in den neuesten VC9 kompilierten Builds, wo sie die Unix-zu-Windows-Übersetzungsschicht ausziehen und die Windows-Schnittstellen direkt aufrufen. –

+0

Danke Bob. Du hast sehr gute Argumente gegeben. Ich habe meine eigenen Gründe, dies zu verfolgen, bevor ich diese Entscheidung treffe. Auf der plattformübergreifenden Kompatibilität machen Qt C++ und Poco C++ gute Arbeit und ich liebe sie. – Viet

+0

Danke Nick für die Notiz. – Viet

3

1-3 können vom Zend Compiler

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

4 ist ein bisschen komisch erreicht werden, weil nicht die Qt C++ UI-Framework ein Desktop ist?

+0

Danke Nick :) Ich brauche C++ - Code, um zu arbeiten und zu verbessern, also werde ich weiter suchen. – Viet

+0

Qt C++ kann verwendet werden, um Konsolenanwendungen und Daemons zu schreiben :) Ich habe auch versucht, CGI-Anwendung mit Qt zu schreiben, um seine Breite und Tiefe von Bibliotheken zu genießen (Vernetzung, String-Verarbeitung, I/O ...) – Viet

8

Nach viel Recherche habe ich http://www.phpcompiler.org/doc/maketea.pdf und http://rosecompiler.org/ROSE_Tutorial/ROSE-0.9.4a-Tutorial.pdf gefunden. Da PHP-Quellcode geparst und dann in XML umgewandelt werden kann, ist die Konvertierung in C++ nur eine Frage von XSLT. Darüber hinaus unterstützt PHPCompiler auch Plugins und verschiedene Transformationen des Quellcodes (basierend auf AST-Transformationen). Ich denke, das sollte jetzt ausreichen.

Einige zusätzliche Hinweise:

  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

Vielen Dank allen für an der Diskussion teilnehmen!