web-dev-qa-db-fra.com

Convertir PHP en code C ++

Je cherche un moyen de convertir PHP en C++. Il y a quelques raisons pour lesquelles je veux le faire:

Raison principale: il y a beaucoup de grands PHP outils/logiciels que j'aimerais utiliser et incorporer dans des applications GUI ou non GUI C++

  1. Pour booster les performances
  2. Pour éviter la dépendance aux bibliothèques PHP
  3. Pour éviter de divulguer le code source sur les environnements d'hébergement partagé
  4. Pour être habilité par les fonctionnalités du langage C++ et utiliser des frameworks comme Qt C++ et Poco

Jusqu'à présent, j'ai trouvé:

http://sourceforge.net/projects/binaryphp

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

Veuillez partager vos idées et outils que vous connaissez. Merci d'avance!

EDIT: J'ai également besoin d'une opérabilité multiplateforme et d'une bonne correspondance pour $$, les fonctions de sucre syntaxique et l'interface.

EDIT: Veuillez noter que 2 outils susmentionnés utilisent 2 approches différentes. Le premier a des bibliothèques intégrées pour convertir PHP code procédural et le faire fonctionner. Le second traduit (Word par Word) de PHP en C++).

37
Viet

Cela pourrait également devenir intéressant dans un court laps de temps:

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

C'est ce qui maintient Facebook en vie;) Une technologie qui traduit et compile php en C++ et va devenir open-source. Je m'attends à ce qu'il soit vraiment bien testé.

26
naugtur

Peut-être que je ne comprends pas complètement le contexte de la raison pour laquelle vous pensez que vous devez faire cela, mais je ne pense pas que les raisons que vous avez publiées soient particulièrement convaincantes.

  1. Peu d'applications Web sont liées au processeur, donc je ne pense pas que vous serez impressionné par l'augmentation des performances. Le compiler en code natif ne raccourcira pas vos E/S ou DB. Il existe de meilleures façons de mettre à l'échelle une application Web que de passer au C++, et la plupart d'entre elles impliquent de réduire le temps que votre script attend pour les données de la base de données ou du disque (comme le partitionnement de votre base de données ou le déplacement de données dans un RAM cache).

  2. Les dépendances de bibliothèque sont-elles vraiment un problème? La plupart des bibliothèques les plus populaires sont livrées avec le noyau PHP maintenant, plus toutes les autres sont généralement faciles à installer. Une fois que vous les avez, vous ne les touchez pas, donc je ne sais pas pourquoi c'est une raison particulièrement convaincante de passer au C++.

  3. C'est en fait une très mauvaise raison de passer au C++. La plupart des environnements d'hébergement partagés vous permettront d'exécuter des scripts dans un environnement PHP, mais très peu ou pas du tout (sauf si vous regardez un VPS) vous permettra d'exécuter un binaire arbitraire comme vous aurez avec une application C++. Il existe de meilleures façons de contrôler la lisibilité des sources dans des environnements partagés, comme utiliser correctement les autorisations de fichiers. Si vous craignez que les clients ne volent votre code PHP PHP, tant pis. peut essayer de brouiller tout ce que vous voulez, mais c'est généralement inutile à la fin de la journée.

  4. De quelles fonctionnalités C++ spécifiques avez-vous si désespérément besoin que PHP n'offre pas? Pour être honnête, l'idée de votre moyenne PHP codeur déblayant avec des pointeurs et de la mémoire) l'allocation me fait peur. Il existe de très bons frameworks disponibles pour PHP, et je vous suggère d'épuiser complètement toutes ces options avant de vous tourner vers la modification du langage de votre base de code entière juste pour certaines fonctionnalités que vous aimez dans cadre particulier.

  5. Vous avez mentionné la compatibilité multiplateforme dans votre commentaire ... PHP va honnêtement rendre cela plus facile que C++. L'implémentation PHP est relativement standardisée sur toutes les plateformes) (à l'exception de quelques fonctions de niveau inférieur) alors que vous allez probablement utiliser un compilateur différent et des appels système en C++.

37
Bob Somers

Après de nombreuses recherches, j'ai trouvé http://www.phpcompiler.org/doc/maketea.pdf et http://rosecompiler.org/ROSE_Tutorial/ROSE-0.9.4a -Tutorial.pdf . Étant donné que PHP le code source peut être analysé puis traduit en XML, sa conversion en C++ n'est qu'une question de XSLT. De plus, PHPCompiler prend également en charge les plugins et diverses transformations de code source (basées sur les transformations AST). Je pense que cela devrait être suffisant pour l'instant.

Quelques références supplémentaires:

  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

Merci à tous d'avoir participé à la discussion!

8
Viet

Facebook hiphop est ouvert depuis un certain temps maintenant: https://github.com/facebook/hiphop-php/

8
bslima

1-3 peut être accompli par le compilateur Zend

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

4 est un peu bizarre, car le Qt C++ n'est-il pas un framework d'interface utilisateur de bureau?

3
Nick Berardi