2016-04-25 63 views
0

的Java: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

http://blog.csdn.net/guotong1988/article/details/51251396 –

回答

0

您可以使用自定義php5/php7 __autoload函數來實現它,該函數檢查每個參數,如果它是Java實例,則使用java_closure()將其包裝爲包裝Java類型的生成接口列表。在僞代碼類似的:

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

Java.inc中需要不超過〜10-15行的附加PHP代碼。