从 Java (Scala) 调用 PHP 代码并获取结果

2024-03-24

这似乎在几个地方被问到,并被标记为“关闭”和“偏离主题”。然而,人们似乎不断遇到这个问题

从java调用php方法 https://stackoverflow.com/questions/614894/invoking-a-php-method-from-java(关闭)

从 Java 调用 PHP https://stackoverflow.com/questions/614995/calling-php-from-java(关闭)

如何在 Java 应用程序中运行 PHP 代码? https://stackoverflow.com/questions/12897070/how-can-i-run-php-code-within-a-java-application(关闭)

这个答案 https://stackoverflow.com/a/12903671/243233最后一个问题部分回答了这个问题,但没有阐明如何读取输出。

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

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

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

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

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


代码创建自这个答案 https://stackoverflow.com/a/12903671/243233 and 这个例子 http://php-java-bridge.sourceforge.net/doc/examples/source.php?source=PhpThreads.java:

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

and

scala javaphp.Test
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 Java (Scala) 调用 PHP 代码并获取结果 的相关文章

  • 加密 mongodb 中的密码字段

    我有以下代码 它插入userName and password进入数据库 但密码以纯文本格式存储 我的意思是 当我查看数据库时 我可以看到插入的密码 我想存储password in encrypted format MongoClient
  • 对象映射器 - YAMLFactory - 由于缺少 _createContentReference 方法而出现异常

    我正在使用最新的 2 13 0 版本的 jackson 当我尝试解析 YAML 文件时 出现此异常 java lang NoSuchMethodError com fasterxml jackson core io ContentRefer
  • 如何找到 httpd.conf 文件所在的位置?

    如何找到 apache PHP 上 httpd conf 文件的路径 我不知道我的脚本是否会在Windows apache或Linux中运行 我需要知道在哪里可以找到这个文件 以便从那里找到参数 谢谢 我认为它没有接触 PHP 跑步http
  • PHP mysql_num_rows 死错误

    我想创建一个页面 用户可以在其中添加他们的信息 我已经创建了该页面 但我真正的问题是代码 我有一些问题 这部分代码
  • 有没有办法获取 PHP 中可用区域设置的列表?

    在Java中 你可以调用Locale getAvailableLocales 获取可用区域设置的列表 我期待 PHP 的同等功能Locale http php net manual en class locale php类 但找不到 有没有
  • 从数据库中给定时间起经过的时间

    我有一个 HTML 表 其中包含从数据库中提取的记录 我正在使用 PHP MySQL 我的表中名为 Timer 的列未从数据库中检索 我需要在此处显示经过的时间 从数据库中的特定时间开始 例如 假设现在的时间是2013年2月21日下午6点2
  • Netty Nio java 中的通信

    我想在 Netty nio 中创建一个具有两个客户端和一个服务器的通信系统 更具体地说 首先 我希望当两个客户端与服务器连接时从服务器发送消息 然后能够在两个客户端之间交换数据 我正在使用本示例提供的代码 https github com
  • 有没有办法删除 JShell 中的导入?

    我正在发现 JShell 并且发现默认添加的导入 jshell gt imports import java io import java math import java net import java nio file import j
  • 高效序列化案例类

    对于我正在工作的图书馆 我需要提供一个高效 便捷 typesafe序列化 scala 类的方法 理想的情况是用户可以创建一个案例类 并且只要所有成员都是可序列化的 它似乎也应该如此 我准确地知道序列化和反序列化阶段的类型 因此不需要 也不能
  • 为什么 CompletableFuture 的 thenAccept() 不在主线程上运行

    我在 CompletableFuture 的 SupplyAsync 中处理长时间运行的操作 并将结果放入 thenAccept 中 有时 thenAccept 在主线程上执行 但有时它在工作线程上运行 但我只想在主线程上运行 thenAc
  • 可选择将项目添加到 Scala 映射

    我正在寻找这个问题的惯用解决方案 我正在构建一个valScala 不可变 Map 并希望有选择地添加一项或多项 val aMap Map key1 gt value1 key2 gt value2 if condition key3 gt
  • PHP filesize() 适用于除一个文件之外的所有文件,给出 stat failed 错误

    我正在编写一个 PHP 页面 该页面通过抓取现有 HTML 页面来生成播客提要 一切正常 但我的 mp3 文件之一出现 filesize stat failed 错误 据我所知 该文件没有损坏 并且播放得很好 我还将文件重新上传到服务器 它
  • 在 PHP 中创建关联数组

    我有一个多维数组 shop array array appn1 pub1 pub2 pub3 array appn2 pub1 array appn3 pub1 pub2 每个数组中的第一项是申请编号每个数组中的其余部分是出版号 我得到每个
  • 在进行堆转储后,如何在发生 OutOfMemoryError 时重新启动 JVM?

    我知道关于 XX HeapDumpOnOutOfMemoryError https stackoverflow com q 542979 260805JVM 参数 我也知道 XX OnOutOfMemoryError cmd args cm
  • 尝试通过 Java 8 中的 JDBC-ODBC 连接到 .accdb 文件时出现 ClassNotFoundException

    我正在 Eclipse EE IDE 中的 Java 项目中工作 我必须在其中查询 accdb文件 问题是当我尝试加载驱动程序然后连接到数据库时 它给了我一个异常错误 My code try String filePath myfilepa
  • Java 执行器和长寿命线程

    我继承了一些使用 Executors newFixedThreadPool 4 的代码运行 4 个长寿命线程来完成应用程序的所有工作 这是推荐的吗 我读过Java 并发实践 https rads stackoverflow com amzn
  • Java环境变量设置方法

    我已将以下行插入 bash profile export GOOGLE APPLICATION CREDENTIALS Users jun Downloads export PATH PATH GOOGLE APPLICATION CRED
  • PHP 启动:运行单元测试时无法加载动态库

    当我尝试运行单元测试时 出现此错误 PHP 警告 PHP 启动 无法加载动态库 bz2 尝试过 xampp php ext bz2 找不到指定的模块 xampp php ext php bz2 dll 找不到指定的模块 在未知的第 0 行
  • 如何确定函数是否不返回任何内容?

    有没有办法在 PHP 中使用反射或其他方法来做到这一点 function a return null function b a a null b b null 如果您没有显式返回某些内容 则函数将返回null默认情况下 这就是 PHP 中函
  • RetentionPolicy CLASS 与 RUNTIME

    两者之间有什么实际区别RetentionPolicy CLASS and RetentionPolicy RUNTIME 看起来两者都被记录到字节码中 并且无论如何都可以在运行时访问 无论如何 两者都可以在运行时访问 那不是那个javado

随机推荐

  • 在 Visual Studio 中使用不同的编译器

    这可能是一个初学者问题 但在互联网上找不到正确的答案 我很好奇我可以使用吗其他Visual Studio 10 中的编译器 我喜欢 从 Visual Studio 2010 开始 概念上可以集成另一个编译器 在书里 在 Microsoft
  • 是否可以使用flyway管理oracle数据库?

    我真的很难理解如何使用 Flyway 来管理 Oracle 数据库 相关数据库有 3 个模式 如果我在我的 gradle 文件中的 Flyway 插件定义中规定了 3 个模式 我如何管理用户本身的创建以及他们使用的表空间 任何提示或建议将非
  • Jquery Mobile 面板随内容滚动

    使用 Jquery Mobile 我有一个面板 div 来创建导航系统并将其高度设置为浏览器的 100 如果内容超出面板的高度 则 css Overflow y 属性可让用户滚动查看隐藏的内容 很简单吧 现在我遇到了一些麻烦 虽然 css
  • 如何向节点的所有特定子节点添加属性

    我有以下节点 我想在其中向所有节点添加属性add nodes
  • Flutter Firestore - 查找“文档快照”id

    我有一个带有产品列表的简单应用程序 产品存储在 Firebase Firestore 上 我想下载产品列表并让用户可以更新一些数据 所以我准备了产品清单 Widget buildProductsList return new StreamB
  • JcaPEMWriter 可以生成 PKCS#8 输出吗?

    以下代码使用JcaPEMWriterBouncyCastle 中的类 以 PKCS 1 格式输出随机生成的 RSA 私钥 BEGIN RSA PRIVATE KEY public static void main String args t
  • Kotlin for 具有不同的增量

    Kotlin 有以下内容 for i in 0 10 它与Java类似 for int i 0 i lt 10 i 但是如何改变 kotlin 中的增量以获得与 java 中类似的东西 for int i 0 i lt 10 i i 2 f
  • TYPO3-Slug 无法使用 f:link.action 中的多个参数

    我尝试在 TYPO3 9 5 中从操作链接创建语音 URL 以便让下一页知道用户来自哪里 当我使用此代码作为操作链接时
  • 更改 android 字体不起作用

    我正在使用以下代码行来更改字体类型android应用 L Typeface font Typeface createFromAsset this getAssets fonts Abumohammed ttf textView setTyp
  • 为什么泛型类中重复嵌套类型的字段声明会导致源代码大幅增加?

    场景非常罕见 但非常简单 定义一个泛型类 然后创建一个继承自外部类的嵌套类 并在嵌套内定义一个关联字段 自类型 代码片段比描述更简单 class Outer
  • WCF 中是否可以有可选的 DataMember?

    如果我有以下课程 DataContract public class GetColorsRS DataMember Name Colors Order 0 IsRequired true public List
  • 我是否仍然需要对 CSS box-shadow 属性使用所有五个供应商前缀?

    声明时说box shadow or text shadow或者梯度 你还需要所有的前缀吗 webkit box shadow inset 0 0 1px 1px e3e3e3 moz box shadow inset 0 0 1px 1px
  • Jetpack Compose Constraint 布局约束不链接

    我将 constrainAs 与 Jetpack Compose 结合使用 将 wifi 选项列表限制到父级的顶部 然后限制到文本视图的底部 从照片中可以看出 我的列表并没有被限制在父级的顶部或其下面的文本视图上 它甚至被向上推离屏幕 作为
  • Actions on Google 上的帐户取消关联

    我正在 Google 上开发一项操作 要求用户使用我的服务登录 我以前可以实施帐户关联 https developers google com actions develop identity account linking 效果很好 我能
  • UDAF 与 Spark 中聚合器的性能比较

    我正在尝试在 Spark 中编写一些注重性能的代码 并想知道是否应该编写一个聚合器 https spark apache org docs latest api java org apache spark Aggregator html o
  • Haskell:代数数据与元组

    data Ray Ray Vector Vector or type Ray Vector Vector 在惯用的 Haskell 中哪个是首选 为什么我应该使用其中一种而不是另一种 我不关心表现 它似乎与功能没有什么区别 例如 trace
  • 使用 jax-rs 从 REST 服务下载 xml,无需本地存储文件

    在一项服务中 我正在创建一个名为 doc 的 XML 文档 并且希望用户收到下载该文档的提示 而不必将其保存在本地 如显示打开或保存文件的提示 但是 我无法找到应该如何构建将返回的响应 甚至无法找到 Produce 的类型 到目前为止我有这
  • 在 TCSH Shell 中启用历史记录

    如何启用在 tcsh shell 中输入的所有命令的日志记录 我试过了 将 history 变量设置为 100 savehist 到 99 将 histfile 设置为 home history 在 shell 中键入命令不会将命令保存在历
  • 让 gcc 警告隐式转换[重复]

    这个问题在这里已经有答案了 可能的重复 我可以让 GCC 在将太宽的类型传递给函数时发出警告吗 https stackoverflow com questions 310108 can i make gcc warn on passing
  • 从 Java (Scala) 调用 PHP 代码并获取结果

    这似乎在几个地方被问到 并被标记为 关闭 和 偏离主题 然而 人们似乎不断遇到这个问题 从java调用php方法 https stackoverflow com questions 614894 invoking a php method