Мне удалось запустить проект моста Php / Java и test.php
но у меня проблема.
я хотел бы вызвать метод Java с параметром Java Object
Источник Java:
public class OtherClass {
public BaseBean funBean(BaseBean param){
param.setName("Bean Name");
return param;
}
}
public class BaseBean {
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String name;
}
PHP скрипт:
Я хотел бы, чтобы это могло бежать так, это не может.
<?php
require_once("java/Java.inc");
//require_once("java/java_helper.php");
class BaseBean{
public $name;
}
$eh = new java("com.anima.service.OtherClass");
$cla = new BaseBean();
$cla->name = "nameTest";
$eh->funBean($cla);
?>
Или есть какое-то решение, которое может помочь мне реализовать эту идею.
Я хочу, чтобы вызвать метод Java с PHP-объекта.
Можете ли вы, пожалуйста, кто-нибудь помочь мне в этом.
Заранее спасибо.
Я думаю, что вы должны создать BaseBean как «экземпляр Java», а также:
$cla = new java("com.anima.service.BaseBean");
Или же вы можете попробовать с java_closure, но я думаю, что в этом случае вы должны изменить ожидаемый тип в вашем java-методе следующим образом:
public Object funBean(Object param){ ... }
$cla = new BaseBean();
$cla->name = "nameTest";
$jObjCla = java_closure($cla);
$eh->funBean($jObjCla);
Я нашел в Документация по мостам PHP / Java у того метода java_closure есть третий параметр, который представляет собой массив интерфейсов Java, который должен быть реализован созданным обернутым объектом:
java_closure(new Listener(), null, array(new Java("java.awt.event.ActionListener")));
Источник Java:
public interface IBaseBean {
String getName();
void setName(String name);
}
public class OtherClass {
public IBaseBean funBean(IBaseBean param){
param.setName("Bean Name");
return param;
}
}
public class BaseBean implements IBaseBean {
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String name;
}
PHP скрипт:
<?php
require_once("java/Java.inc");
class BaseBean{
public $name;
}
$eh = new java("com.anima.service.OtherClass");
$cla = new BaseBean();
$cla->name = "nameTest";
$jObjCla = java_closure($cla, null, array(new Java("com.anima.service.IBaseBean")));
$eh->funBean($jObjCla );
?>
Других решений пока нет …