LAJP系列教程-第 3部分-LAJP规范标准使用方法来源: 发布时间:星期五, 2009年10月2日 浏览:0次 评论:0
转载自:http://blog.csdn.net/diaoyf/archive/2009/10/02/4626931.aspx
如果您已经成功的运行了教程第二部分的helloworld,一定会感觉到LAJP的使用非常简单,但对于一项新技术做出评价不能只停留在Hello World层面,本节教程将带您更深入地了解LAJP。 运行环境的要求PHP和Java都是很优秀的夸平台的编程语言,LAJP在这点上没有限制,凡是能够运行PHP的环境,凡是能够运行Java的环境,就可以运行LAJP。 PHP调用Java服务:
|
php | java | 说明 | |
布尔 | boolean | boolean | |
整形 | int | int | |
浮点 | float | double | 在php中float和double含义相同 |
字符串 | string | java.lang.String | |
顺序集合 | array(key:int ) | java.util.List | php中array的每个元素的key类型必须是int |
key-value集合 | array(key:string ) | java.util.Map | php中array的每个元素的key类型必须是string |
对象 | object | JavaBean | |
空 | NULL | null |
需要说明的是PHP中的array、object和Java数据类型的转换。
array:
在PHP中,array可以描述多种结构: 顺序集合(类似Java的ArrayList),key-value集合(类似Java的Hashtable或HashMap),栈等。在LAJP中只能使用两种结构:
1. 顺序集合 集合元素的key类型为int类型。
$a = array();
$a[0] = 10;
$a[1] = 20;
$a[2] = 30;
// 也可以:
$a = array();
$a[] = 10;
$a[] = 20;
$a[] = 30;
//但不能
$a = array();
$a['A'] = 20;
$a[1] = 10;
$a[2] = 30;
2. key-value集合 集合元素的key类型为string类型。
$a = array();
$a["a"] = 10;
$a["b"] = 20;
$a["c"] = 30;
在PHP的array转换为Java时,LAJP内部是通过查看array的第一个元素的key,如果key是int类型,被转换为java.util.ArrayList;如果key是string类型,被转换为java.util.HashMap,反过来也一样,Java的List转换为PHP的以KEY为int的数组,Map转换为PHP的以KEY为String的数组。
在PHP的array中的元素,可以是表1中的任何一种类型,包括array和Object,这意味着可以构建出复杂的结构,如数组中的数组(通常称为二维或多维数组)。
object:
PHP对象被映射到Jave的JavaBean对象,这意味着PHP类中的每一个属性,在Java对应类中都有一个同名,同类型(符合表1映射关系)的属性,且此属性有getter和setter方法。
目前只支持PHP4规范对象转换到Java,这是因为在LAJP内部转换时需要将PHP对象数据序列化,PHP5对象不能转换,这点尤其要注意。
目前也不支持PHP中的命名空间(Namespaces),在PHP中用"_"表示Java中的".",如要映射到Java的"com.foo.MyClass"类,需要在PHP中定义类"com_foo_MyClass"。
在LAJP中提供了一个小工具,将Java的JavaBean类自翻译为对应的PHP类,例如在Java中有这样的一个JavaBean:
001 package cn.com.aili;
002 public class PhpObject
003 {
004 private int a;
005 private double b;
006 private boolean c;
007 private String d;
008
009 ...getter和setter方法
010 }
编写一个PHP文件:
001 <?php
002 require_once("../lajp/php_java.php");
003 $ret = lajp_call("lajp.ReflectUtil::javaBean2Php", "cn.com.aili.PhpObject");
004 echo "{$ret}";
005 ?>
运行后,会在页面输出对应的PHP类:
cn_com_aili_PhpObject
{
var $a;
var $b;
var $c;
var $d;
}
LAJP的项目分工:
在LAJP体系中,PHP充当客户端(调用者),Java充当服务端(服务提供者)。
* PHP
负责和浏览器客户端的交互,编写HTML页面、表单,接收浏览器提交的数据,对提交数据的合法性交验,Cookie/Session的维护,Ajax服务等是其固有的职责。PHP不应该编写复杂业务逻辑程序,不应出现连接接数据库相关代码。
* Java
负责编写业务逻辑,数据对象,数据库程序。在Java中不应该出现和浏览器交互的代码,例如不能出现Servlet/JSP API代码,不应编写Ajax服务。
相关文章
读者评论
发表评论
- tsremoteapp:windows server 2008 R2/windows 7管理十 9TS终端的 2remoteapp
- windows2008r2:windows server 2008 R2/windows 7管理十 8TS终端的一
- Photoshop教程:美女照片添加时尚炫舞光线特效
- adobeillustrator:Adobe Illustrator制作焦糖涟漪效果
- windowsapi函数库:Windows API一日一练(80)MultiByteToWideChar函数
- windowsapi函数库:Windows API一日一练(79)GlobalMemoryStatusEx函数
- windowsapi函数库:Windows API一日一练(78)HeapAlloc函数
- windowsapi函数库:Windows API一日一练(77)VirtualAlloc函数
- windowsapi函数库:Windows API一日一练(76)GlobalAlloc函数
- windowsapi函数库:Windows API一日一练(75)SystemParametersInfo函数