Это, кажется, было задано в нескольких местах и было помечено как «закрытое» и «не по теме». Тем не менее, люди, кажется, имеют эту проблему постоянно
вызов метода PHP из Java (закрыто)
Вызов PHP из Java (закрыто)
Как я могу запустить код PHP в приложении Java? (закрыто)
Этот ответ в последнем вопросе частично отвечает на это, но не разъясняет, как читать результаты.
Я наконец нашел ответ на вопрос:
Как запустить программу PHP изнутри Java и получить его вывод?
Чтобы дать больше контекста, кто-то дал мне файл PHP, содержащий код для некоторого метода foo
который возвращает строку. Как мы вызываем это из JVM?
Поиск в Google бесполезен, так как все статьи, которые я нашел, не объясняют, как вызывать PHP из Java, а скорее из Java из PHP.
Ответ ниже объясняет, как сделать это с помощью моста PHP / Java.
Ответ на Scala, но для программистов на 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
а также
scala javaphp.Test
Других решений пока нет …