PHP-Java-Bridge, использование расширения?

Джава:

package test;

public class HelloWorld {
public HelloWorld(String args){
}

public void ppp(){
System.out.println("....");
};

public  void set(HelloWorld hw){
hw.ppp();
}

public static final String JAVABRIDGE_PORT = "28080";
static final php.java.bridge.JavaBridgeRunner runner = php.java.bridge.JavaBridgeRunner
.getInstance(JAVABRIDGE_PORT);

public static void main(String args[]) throws Exception {
runner.waitFor();
}
}

PHP:

<?php
require_once("/home/gt/workspace/JavaPhp/Java.inc");
use test\HelloWorld;

class abc extends HelloWorld{
function ppp(){
echo "!!!!";
}
}

$hw =new java("test.HelloWorld","str");
$hw -> set(new abc("str"));

Вы можете увидеть в коде PHP, что класс php расширяет класс Java и set() Метод — это методы Java, которые позволяют классу PHP перейти на сторону Java.

Может ли это напечатать «!!!!» не «….»?

Я знаю, что py4j может это сделать, интересно, как это делает PHP / Java Bridge?

0

Решение

Вы можете реализовать его с помощью пользовательской функции __autoload php5 / php7, которая проверяет каждый аргумент и, если это экземпляр Java, упаковывает его с помощью java_closure () со списком сгенерированных интерфейсов для обернутого типа Java. В псевдокоде что-то вроде:

java_autoload_function() {...
__call(java_closure($type, null, $Class->getInterfaces($type)))
}

Требуется не более ~ 10-15 строк дополнительного PHP-кода в Java.inc.

0

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

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

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