我正在寻找一种将PHP代码转换为C++的方法.我想这样做有几个原因:
主要原因:我喜欢使用大量的PHP工具/软件并将其整合到C++ GUI或非GUI应用程序中
提高性能
避免依赖PHP库
避免在共享托管环境中公开源代码
要获得C++语言特性的支持,并使用Qt C++和Poco等框架
到目前为止,我发现:
http://sourceforge.net/projects/binaryphp
http://www.mibsoftware.com/php2cpp/
请分享您的想法和工具.先感谢您!
编辑: 我还需要跨平台的可操作性和$$,语法糖功能和接口的良好匹配.
编辑: 请注意,上述2个工具使用2种不同的方法.前者有内置的库来转换PHP程序代码并使其运行.后者(逐字逐句)从PHP转换为C++.
也许我并不完全了解你认为你需要这样做的背景,但我不认为你发布的原因特别引人注目.
没有太多的网络应用程序是CPU限制的,所以我认为你不会对性能的提升印象深刻.将其编译为本机代码不会使您的I/O或DB等待更短.有更好的方法来扩展Web应用程序而不是转移到C++,其中大多数都涉及减少脚本等待来自数据库或磁盘的数据的时间(例如分片数据库或将数据移动到RAM缓存中).
库依赖关系真的是一个问题吗?许多最流行的库现在与PHP核心捆绑在一起,而且任何其他库通常都很容易安装.一旦你有了它们,你就不会碰它们,所以我不确定为什么这是转向C++的特别令人信服的理由.
这实际上是转向C++的一个非常糟糕的原因.大多数共享托管环境都允许您在PHP环境中运行脚本,但很少甚至没有(除非您正在查看VPS)将允许您运行任意二进制文件,就像您使用C++应用程序一样.有更好的方法来控制共享环境中的源可读性,例如正确使用文件权限.如果你担心客户窃取你的PHP代码,那么太糟糕了.您可以尝试对所有内容进行模糊处理,但在一天结束时通常没有意义.
PHP没有提供哪些特定的C++特性?说实话,你的普通PHP编码器捣乱指针和内存分配的想法吓坏了我.PHP有很好的框架,我建议你在转向改变整个代码库的语言之前完全用尽所有这些选项,只是为了特定框架中你喜欢的一些功能.
您在评论中提到了跨平台兼容性...... PHP老实说这比C++更容易.PHP实现在各个平台上相对标准化(除了少数低级函数),而您可能会在C++中使用不同的编译器和系统调用.
这可能会在短时间内变得有趣:
https://developers.facebook.com/blog/post/2010/02/02/hiphop-for-php--move-fast/
这是让facebook活着的原因;)一种将PHP转换为C++并将其转换为开源的技术.我希望它能够得到很好的测试.
经过大量研究,我找到了http://www.phpcompiler.org/doc/maketea.pdf和http://rosecompiler.org/ROSE_Tutorial/ROSE-0.9.4a-Tutorial.pdf.由于可以解析PHP源代码然后将其转换为XML,因此将其转换为C++只是XSLT的问题.此外,PHPCompiler还支持插件和源代码的各种转换(基于AST转换).我认为现在应该足够了.
一些额外的参考:
http://www.phpcompiler.org
http://www.phpcompiler.org/doc/latest/devintro.html
http://rosecompiler.org
http://rosecompiler.org/ROSE_UserManual/ROSE-UserManual.pdf
感谢大家参与讨论!
Facebook hiphop现在开放一段时间了:https: //github.com/facebook/hiphop-php/