调用从Java(斯卡拉)PHP代码,并得到结果(Invoke PHP code from Java

2019-09-29 19:16发布

这似乎已经在几个地方被要求并已被标记为“关闭”和“题外话”。 然而,人们似乎一直有这个问题

调用从Java一个PHP方法 (封闭)

从Java调用PHP (关闭)

我怎样才能在Java应用程序中运行PHP代码? (关闭)

这个答案在最后一个问题部分回答了这一点,但没有说明如何读取输出。

我终于找到了问题的答案:

如何从Java内部运行PHP程序并获得它的输出 ? 为了让更多的背景下,有人给了我的代码包含一些方法的PHP文件foo返回一个字符串。 我们如何从JVM调用此?

搜索在谷歌是没有帮助的,因为我发现所有的文章没有解释如何从Java调用PHP而是从Java PHP。

下面的回答解释了如何使用PHP / Java桥来做到这一点。

答案是Scala,但很容易读取的Java程序员。

Answer 1:

从创建的代码本SO回答和这个例子 :

package javaphp

import javax.script.ScriptEngineManager
import php.java.bridge._
import php.java.script._
import php.java.servlet._

object JVM{ // shared object for PHP/JVM communication
  var out = ""
  def put(s:String) = {
    out = s
  }
}

object Test extends App {
  val engine = (new ScriptEngineManager).getEngineByExtension("php")  
  val oldCode = """
    <?php
        function foo() {
            return 'hello';
            // some code that returns string
        }
    ?>
  """
  val newCode = """
    <?php
        $ans = foo();
        java('javaphp.JVM')->put($ans);
    ?>
  """+oldCode

  // below evaluates and returns
  JVM.out = "" //reset shared output
  engine.eval(newCode)
  println("output is : "+JVM.out) // prints hello
}

要运行这个文件:

安装PHP,Scala和正确设置路径。 然后创建一个文件php.scala与上面的代码。 然后运行:

scalac php.scala

scala javaphp.Test


文章来源: Invoke PHP code from Java (Scala) and get result
标签: java php scala