webspere php,在WebSphere sMash中集成Java和PHP

Java Bridge 局限性

Java Bridge 旨在作为让 PHP 脚本使用 Java 类的简单方法使用。考虑这一点,有几个其中未包含的更为高级的功能。其中最重要的是可靠地调用重载方法。

Java Bridge 完全 根据提供的参数数量选择方法或构造函数。如果存在多个可能性,则 Java Bridge 将选择第一个方法或构造函数并试用。这极为简单,使用错误的参数类型调用构造函数或方法时,会引发异常。

使用签名选择重载

选择合适的重载的问题已经在最新的 Project Zero 构建版本(在 WebSphere sMash 1.0 中不 可用)中通过添加新的 JavaSignature 类得到了解决。JavaSignature 允许脚本通过定义参数类型查找以下内容来明确指定调用哪个构造函数或方法:

$signature = new JavaSignature(JAVA_STRING);

$string = new Java("java.lang.String",

$signature, "Hello World!");

var_dump($string->toLowerCase());

var_dump($string->split(" "));

var_dump($string->toUpperCase());

?>

JavaSignature 的参数来自以下 PHP 常量:

●  JAVA_BOOLEAN

●  JAVA_BYTE

●  JAVA_CHAR

●  JAVA_SHORT

●  JAVA_INT

●  JAVA_LONG

●  JAVA_FLOAT

●  JAVA_DOUBLE

●  JAVA_STRING

●  JAVA_OBJECT

在前面的示例中,示例选择了 java.lang.String 上的构造函数,此构造函数接受单个 Java String 作为其参数 (JAVA_STRING)。多个参数使用逗号分隔,例如,newJavaSignature(JAVA_STRING, JAVA_INT)。可以使用 JAVA_ARRAY 修饰符指定 Java 类型的数组。例如,以下代码将选择字符串数组: newJavaSignature(JAVA_STRING | JAVA_ARRAY)。

以下代码片段显示了一个 JavaSignature,它选择 java.lang.String 上的 valueOf 方法的重载。请注意签名作为第一个参数如何传递到方法调用。Java Bridge 知道对其进行检查来获取签名。

$class = new JavaClass("java.lang.String");

$signature = new JavaSignature(JAVA_INT);

var_dump($class->valueOf($signature, 1234567890));

?>

方法名称区分大小写

PHP 中的方法不区分大小写,而 Java 区分大小写。Java Bridge 区分大小写,因此 PHP 方法名称必须与 Java 方法名称完全匹配。

静态方法和字段

Java 开发人员习惯使用类名称调用静态方法和字段(例如,Integer.MAX_VALUE)。这在 PHP 中尚不可能,因此必须使用 JavaClass.脚本创建 JavaClass 的实例,并使用此实例调用静态方法和访问静态字段。这种做法并不常见,因为需要开发人员创建仅用于访问非实例(静态)方法和字段的对象的实例。

遍历集合

前面的示例代码说明了如何遍历 Java 集合。这相当冗长,比 PHP foreach 语句的开销少。目前,Java Bridge 并未将 Java 迭代器和 PHP foreach 语句集成。以下代码说明了如何在 PHP 中使用 Java 迭代器:

$iterator = $list->iterator();

while ($iterator->hasNext() == TRUE) {

var_dump($iterator->next()); echo "
";

}0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值