いくつかのパブリック Java メソッドを定義する Red5 アプリケーションがあります。サーバーを起動すると、アプリケーション クラスのオブジェクトが作成されます。Java アプリケーション クラスの既存のインスタンスを使用して、PHP からアプリケーション クラスのパブリック メソッドを呼び出そうとしています。
だからここに私のJavaアプリケーションがあります:
public class App extends org.red5.server.adapter.ApplicationAdapter
{
public boolean appStart(IScope app)
{
// This method gets called when the application starts
// and an object of this App class is created.
return true;
}
// This is the method I would like to call from PHP.
public void f()
{
}
}
PHP から、作成された App オブジェクトにアクセスし、そのメソッドを呼び出したいと思いますf()
。
「コンテキスト」と呼ばれるものをいじってみました。したがって、Java メソッドApp.appStart()
では、次のようにしました。
// Save a reference to this App object to be retrieved later in PHP.
new PhpScriptContextFactory().getContext().put("x", this);
そしてPHPでは、保存されたオブジェクトに次のようにアクセスしようとしました:
require_once("http://localhost:5080/JavaBridge/java/Java.inc");
var_dump(java_is_null(java_context()->get("x")));
残念ながら、java_is_null()
PHP の関数は を返しますtrue
。
また、 App オブジェクトを App クラスの静的変数に保存しようとしましたが、PHP でその変数にアクセスすると、その値はnull
.