2009-07-07 152 views
36

我正在寻找一种方法将PHP代码转换为C++。有几个原因,我想这样做:将PHP转换为C++代码

的主要原因是:有伟大的PHP工具/软件一堆,我很乐意使用,并纳入C++图形用户界面和非GUI应用程序

  1. 为了提高性能
  2. 为了避免在PHP库依赖
  3. 为了避免在共享托管环境中
  4. 为了通过C++语言特性被授权公开的源代码,并利用类似的Qt C框架的++和波索

到目前为止,我发现:

http://sourceforge.net/projects/binaryphp

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

请分享你的想法和工具,你知道的。先谢谢你!

编辑: 我还需要跨平台的可操作性和良好的匹配$$,语法糖的功能和接口。

编辑: 请注意,2上述工具使用2种不同的方法。前者具有内置库来转换PHP程序代码并使其运行。后者将PHP(逐字)转换为C++。

+6

看起来你回答了你自己的问题。 – 2009-07-07 02:48:25

+0

我需要额外:)这些还不够。如何处理$$或Interface等情况?我试图避免写我自己的代码。我也瞄准跨平台的互操作性。 – Viet 2009-07-07 03:01:06

+2

PHP已经跨平台互操作。如果你想避免编写你自己的代码,你为什么要把它转换成C++? – 2009-07-07 03:16:46

回答

37

也许我并没有完全理解为什么你认为你需要这样做的背景,但我不认为你发布的原因是特别引人注目的。

  1. 没有很多Web应用程序是CPU密集型的,所以我不认为你会在性能升压留下深刻的印象。将其编译为本地代码不会使您的I/O或数据库等待更短的时间。有更好的方法来扩展一个Web应用程序比移动到C++,其中大部分包括减少脚本等待数据从数据库或磁盘(例如分解您的数据库或移动数据到RAM缓存)的时间。

  2. 库的依赖关系真的有那么多问题吗?许多最流行的库现在都与PHP核心捆绑在一起,再加上其他的库通常都是安装的。一旦你有了它,你就不会触摸它们,所以我不确定为什么这是转移到C++的一个特别有说服力的理由。

  3. 这实际上是一个非常糟糕的原因转移到C++。大多数共享主机环境将允许您在PHP环境中运行脚本,但很少到甚至没有(除非您正在查看VPS)将允许您运行任意二进制文件,就像使用C++应用程序一样。有更好的方法来控制共享环境中的源代码可读性,例如正确使用文件权限。如果您担心客户窃取您的PHP代码,那太糟糕了。您可以尝试混淆所有您想要的内容,但在一天结束时它通常毫无意义。

  4. 什么特定的C++功能,你迫切需要PHP不提供?说实话,你的平均PHP编码人员用指针和内存分配进行分析的想法让我感到害怕。PHP提供了非常好的框架,并且我建议您在改变整个代码库的语言之前完全用尽所有这些选项,只是为了在特定框架中使用某些功能。

  5. 您在评论中提到了跨平台兼容性...... PHP老实说会比C++更容易。 PHP实现在各个平台上相对标准化(除少数低级函数外),而您可能会在C++中使用不同的编译器和系统调用。

3

1-3可以通过在Zend编译

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

4来实现是一个小奇怪,因为不是Qt的C++桌面UI框架?

8

经过大量研究,我发现http://www.phpcompiler.org/doc/maketea.pdfhttp://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

感谢大家的参与讨论!