Convertir PHP en code C++ [fermé]
je cherche un moyen de convertir le code PHP en C++. Il y a quelques raisons pour lesquelles je veux le faire:
raison principale: il y a un tas d'outils/logiciels PHP que j'aimerais utiliser et intégrer dans les applications GUI ou non GUI de C++
- Pour améliorer la performance
- pour éviter la dépendance aux bibliothèques PHP
- pour éviter de divulguer du code source sur des environnements d'hébergement partagés
- d'être autorisé par le langage C++ fonctionnalités et utilisez des cadres 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 les outils que vous connaissez. Je vous remercie à l'avance!
EDIT: J'ai aussi besoin de l'opérabilité multiplateformes et bonne correspondance pour$$$, les fonctions de sucre syntaxiques et Interface.
EDIT: Veuillez noter que 2 outils mentionnés ci-dessus utilisent 2 approches différentes. Le premier a des bibliothèques intégrées pour convertir le code de procédure PHP et le faire fonctionner. Ce dernier traduit (mot par mot) de PHP en C++.
5 réponses
Cela peut aussi être 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 qui va passer à l'open-source. J'attends qu'il soit vraiment bien testé.
peut-être que je ne suis pas entièrement grok le contexte de pourquoi vous pensez que vous avez besoin de faire cela, mais je ne pense pas que les raisons que vous avez posté sont particulièrement convaincants.
peu d'applications web sont reliées au CPU, donc je ne pense pas que vous serez impressionné par l'augmentation de la performance. Le compiler en code natif ne va pas raccourcir votre attente d'E/S ou de DB. Il y a de meilleures façons de mettre à l'échelle une application web que de passer à C++, et la plupart d'entre eux impliquent de réduire le temps que votre script est attendre les données de la base de données ou du disque (comme partager votre base de données ou déplacer des données dans un cache RAM).
les dépendances de bibliothèque sont-elles vraiment un problème? Beaucoup des bibliothèques les plus populaires sont maintenant livrées avec le noyau PHP, en plus de toutes les bibliothèques supplémentaires 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 pour passer au c++.
C'est en fait un très mauvais raison pour passer à 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, voire aucun (à moins que vous ne cherchiez un VPS) vous permettra d'exécuter un binaire arbitraire comme celui que vous aurez avec une application C++. Il existe de meilleures façons de contrôler la lisibilité des sources dans les environnements partagés, comme utiliser correctement les permissions de fichiers. Si vous craignez que les clients volent votre code PHP, tant pis. Vous pouvez essayer de dissimuler ce que vous voulez, mais il est généralement inutile à la fin de jour.
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 que votre code PHP moyen tourne en rond avec les pointeurs et l'allocation de mémoire me fait peur. Il y a de très bons cadres disponibles pour PHP, et je vous suggérerais d'épuiser complètement toutes ces options avant de vous tourner vers le changement du langage de votre base de code entière juste pour certaines fonctionnalités que vous aimez en particulier Framework.
vous avez mentionné la Compatibilité multiplateformes dans votre commentaire... PHP va honnêtement rendre cela plus facile que C++ ne l'est. L'implémentation de PHP est relativement standardisée entre les plates-formes (à l'exception de quelques fonctions de niveau inférieur) alors que vous allez probablement utiliser un compilateur et des appels système différents en C++.
Après beaucoup de recherches, j'ai trouvé http://www.phpcompiler.org/doc/maketea.pdf et http://rosecompiler.org/ROSE_Tutorial/ROSE-0.9.4a-Tutorial.pdf . Puisque le code source de PHP peut être analysé et ensuite traslé en XML, le convertir en C++ est juste une question de XSLT. De plus, PHPCompiler supporte également les plugins et les diverses transformations du code source (basées sur les transformations AST). Je pense que cela devrait suffire pour l'instant.
supplémentaire références:
- http://www.phpcompiler.org
- http://www.phpcompiler.org/doc/latest/devintro.html
- http://rosecompiler.org
- http://rosecompiler.org/ROSE_UserManual/ROSE-UserManual.pdf
merci à tous d'avoir participé à la discussion!
Facebook HipHop est ouvert depuis un moment maintenant: https://github.com/facebook/hiphop-php/
1-3 peut être accompli par le compilateur Zend
4 est un peu bizarre, parce que le Qt C++ n'est-il pas un environnement D'interface de bureau?