Вызвать PHP-код из Java (Scala) и получить результат

Это, кажется, было задано в нескольких местах и ​​было помечено как «закрытое» и «не по теме». Тем не менее, люди, кажется, имеют эту проблему постоянно

вызов метода PHP из Java (закрыто)

Вызов PHP из Java (закрыто)

Как я могу запустить код PHP в приложении Java? (закрыто)

Этот ответ в последнем вопросе частично отвечает на это, но не разъясняет, как читать результаты.

Я наконец нашел ответ на вопрос:

Как запустить программу PHP изнутри Java и получить его вывод?
Чтобы дать больше контекста, кто-то дал мне файл PHP, содержащий код для некоторого метода foo который возвращает строку. Как мы вызываем это из JVM?

Поиск в Google бесполезен, так как все статьи, которые я нашел, не объясняют, как вызывать PHP из Java, а скорее из Java из PHP.

Ответ ниже объясняет, как сделать это с помощью моста PHP / Java.

Ответ на Scala, но для программистов на Java его будет легко прочитать.

1

Решение

Код, созданный из этот так ответ а также этот пример:

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
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]