将现有php类转换为Java的最佳方法是什么?
我的任务是将几个php类转换成java类,这很快就成了我的噩梦。 我理解基本的语言结构,它类似于C.它是所有函数调用和类调用似乎无处可去的事实,var可以在表达式的!中间声明! 这是旋转我的头,哦和零“0”文档的事实。
将php转换为java代码的最佳方法 (和/或) 工具 (和/或) 参考材料是什么?
编辑:有三个原因,我不得不将PHP转换为java。
- 通常的原因,我的老板也告诉我了。
- php太慢了,有时需要几分钟才能向服务器运行请求。
- php是一个扩展和维护的噩梦。(至少对于我们强大的类型语言类型)
你问最佳实践。 我相信在你的案例中一个好的做法是人类愉快地提出的方法:使用自动化工具可能会产生不好的结果:垃圾进入,垃圾出…
你有代码:如有必要,可以用粗线分析它。 并在Java中重新创建它。 这可能是耗时的,但不一定比盲目转换更糟糕。 您可以在途中记录,也许可以使用此分析来查找有问题的部分。
人是最好的工具。
我会尝试重写PHP以删除大多数的PHPfunction到C之类的东西。 然后你可以轻松地用Java重写。
但我需要问一下,为什么需要转换php? 你能不能将php包装成可以从Java调用的东西? 这样,转换时就不会添加任何错误。
- 抛弃代码
- 在java中重写
- ????
- 利润!
我在PHP优化提示问题中说过这一点,我将在此处再说一遍:如果您从静态环境(Web服务器模块或FastCGI)运行PHP,请使用操作码缓存,例如APC 。 否则,PHP会在每次请求时重新解释/重新编译代码!
查看http://www.numiton.com
有人暗示Java不像PHP那么灵活:默认情况下,它实际上更灵活(因为核心API包含数千个类和内置function)。 您只需要学习两种语言的核心概念,例如Java的自动装箱,以便为动态类型腾出空间。 查看http://www.javaworld.com ,我目前正致力于将一个从PHP移植到Java的大API,应该花几天时间。 两个类,libcurl,json解析,也许有一百个方法/函数。
根据PHP代码,这可能是一项几乎不可能完成的任务。 另一种方式更容易。 PHP是一种非常动态的语言,你可以摆脱Java中不可能发生的事情。 一个特别具有破坏性的事情是PHP变量可能在执行期间改变类型。 这很少使用,但可能会发生。 另外,由于PHP是松散类型的,因此存在大量隐式转换。 有些是巧合,而有些则对程序的意义很重要。 然后有一个事实是PHP代码不像Java那样严格面向对象。 即使在面向对象的PHP程序中,您通常也会看到某种程度的过程元素。 这些不能直接映射到Java代码。
作为Pyrolistical,我很好奇为什么你需要转换这段代码? 如果它是遗留代码,那么保持PHP代码运行并通过某种服务接口(SOAP,RPC,其他)与它进行交互不是更好吗? 然后,您可以逐渐更换零件。
为了完整起见,我应该指出JVM有一个PHP运行时。 查看Quercus 。
您可以考虑将当前的代码库保留在PHP中,然后让它在JVM上运行。 然后,您可以根据需要使用Java重写代码。
Caucho / Resin服务器在运行时将PHP代码转换为Java servlet!
我通常会使用php5servlet生成的类,这是一个可以在tomcat和resin中使用的jar。
然后将类文件更改为Java。
干杯
我无法想象存在这样的工具。 我做了类似的C ++和Java。 这是一种痛苦,但最好是通过自我来实现。
或者用C编写并用jni warpper创建一个dll来从Java调用它。 这应该是紧固方式。
您可能可以使用Reflection API编写一些内容来执行此操作,但您实际上无法对函数体执行任何操作 – 您最终会得到没有实现的存根类。
我一直在研究Groovy作为从PHP到Java的过渡语言。 他们(Groovy开发人员)声称它编译为java字节代码与Java代码相同。
它也不那么严格,他们在网站上有几个翻译的例子。
听起来你正试图将程序化的PHP代码转换为OO代码库。
这不是PHP到Java的问题,而是范式的转变。 没有自动化的方法,它会变得粗糙。 特别是如果一个代码库写得很糟糕。
顺便说一句,我也会为什么要转换? 这只是表演吗? 如果是这样,您无法解决性能问题。 我不认为只是从一种语言转换到另一种语言会解决它,你仍然必须找到瓶颈。
我只能找到两个:
1) https://github.com/bafolts/java2php
2) http://www.runtimeconverter.com/
还有Caucho树脂,但它不完全是转换器。 它是Java内部的一个php实现。
互联网上有很多关于numiton的内容,但他们的网站已经停播了好几年了。