【问题标题】:Invoke PHP code from Java (Scala) and get result从 Java (Scala) 调用 PHP 代码并获取结果
【发布时间】:2016-12-04 15:21:07
【问题描述】:

这似乎在几个地方都被问过,并被标记为“关闭”和“离题”。但是,人们似乎经常遇到这个问题

invoking a php method from java(关闭)

Calling PHP from Java(关闭)

How can I run PHP code within a Java application?(关闭)

This answer 在最后一个问题中部分回答了这个问题,但没有说明如何阅读输出。

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

如何在 Java 中运行 PHP 程序并获取其输出? 为了提供更多上下文,有人给了我一个 PHP 文件,其中包含一些返回字符串的方法 foo 的代码。我们如何从 JVM 调用它?

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

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

答案在 Scala 中,但对于 Java 程序员来说很容易阅读。

【问题讨论】:

    标签: java php scala


    【解决方案1】:

    this SO answerthis example 创建的代码:

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多