您的位置:

php怎么设计web客户端啊,浅谈php的web开发技术

本文目录一览:

php做客户端,java做服务端,用webservice怎么交互

.java编写webservice服务端,php作为客户端调用.

1.首先我们写一个简单的java类并发布webservice.

package com.php;

import java.util.Map;

/**

* @author yangjuqi

* @createdate 2009-5-18 下午04:43:09

*

*/

public class WebServiceImpl {

public String sendTransact(Map map) throws Exception {

System.out.println("::: Call testModel1 :::");

if(map!=null){

String bugmanifestid = StringUtil.getValue(map.get("bugmanifestid"));

String editedby = StringUtil.getValue(map.get("editedby"));

String dditeddate = StringUtil.getValue(map.get("dditeddate"));

String fullinfo = StringUtil.getValue(map.get("fullinfo"));

String action = StringUtil.getValue(map.get("action"));

System.out.println("bugmanifestid -$amp;quot;$ +bugmanifestid);

System.out.println("editedby -$amp;quot;$ +editedby);

System.out.println("dditeddate  -$amp;quot;$ +dditeddate);

System.out.println("fullinfo -$amp;quot;$ +fullinfo);

System.out.println("action  -$amp;quot;$ +action);

}

return "success";

}

}

2.配置server-config.wsdd

deployment xmlns=""

xmlns:java=""

handler name="URLMapper"

type="java:org.apache.axis.handlers.http.URLMapper" /

handler name="auth"

type="java:com.php.AuthenticationHandler" /

handler name="URLLogging"

type="java:com.php.LogHandler"

parameter name="filename" value="c:\\MyService.log" /

/handler

service name="IWebService" provider="java:RPC"

parameter name="className"

value="com.php.WebServiceImpl" /

parameter name="allowedMethods" value="*" /

namespace;/namespace

/service

transport name="http"

requestFlow

handler type="URLMapper" /

handler type="URLLogging" /

/requestFlow

/transport

/deployment

3.发布到jboss后,访问 wsdl能看到xml文件就说明webservice发布好了。

4.写testphpweb.php文件

php

/*

* @author juqi yang $amp;amp;$gt;

* @create date 2009-05-18

*/

header("Content-Type: text/html; charset=GB2312");

echo " ::: PHP CALL JAVA-WEBSERVICE ::: br$amp;quot;$;

require_once("nusoap/lib/nusoap.php");

// 要访问的webservice路径

$NusoapWSDL=" wsdl";

// 生成客户端对象

$client = new soapclient($NusoapWSDL, true);

// 设置参数(注意:PHP只能以'数组集'方式传递参数,如果服务端是java,用Map接收)

$param = array( 'bugmanifestid' = 'E090500001',

'editedby' = '张三',

'dditeddate'  = '2009-05-19',

'fullinfo' = '已联系刘德华,筹备今晚吃饭的事,等待回复',

'action'  = '0');

echo "begin remote 。。。br$amp;quot;$;

// 调用远程方法

$result = $client-call('sendTransact', array($param));

echo "end remote 。。。br$amp;quot;$;

// 显示执行结果

if (!$err=$client-getError()){ 

echo '结果 : '.$result;

}else{ 

echo '错误 : '.$err; 

} 

5.启动apache,访问

php页面显示:

::: PHP CALL JAVA-WEBSERVICE :::

begin remote 。。。

end remote 。。。

结果 : success

jboss后台监视结果:

17:12:20,781 INFO [STDOUT] ::: Call testModel1 :::

17:12:20,781 INFO [STDOUT] bugmanifestid -E090500001

17:12:20,781 INFO [STDOUT] editedby -张三

17:12:20,781 INFO [STDOUT] dditeddate  -2009-05-19

17:12:20,781 INFO [STDOUT] fullinfo -已联系刘德华,筹备今晚吃饭的事,等待回复

17:12:20,796 INFO [STDOUT] action  -0

到此,php作为客户端调用java写的webservice服务端完成.

二,php编写webservice服务端,java作为客户端调用.

1.编写php webservice

php

/*

* @author juqi yang $amp;amp;$gt;

* @create date 2009-05-18

*/

header("Content-Type: text/html; charset=GB2312");

require_once("nusoap/lib/nusoap.php");

function sendManifest($param)

{

//把接收到的数据显示出来

return "hello ".$param["projectid"]."=$amp;quot;$.$param["projectname"]."=$amp;quot;$.$param["moduleid"];

}

$server = new nusoap_server();

//配置WSDL namespace

$server-configureWSDL('myservice',  //服务名称

'',  //tns指定的namespace,一般填写自己的URI

true, //endpoint url or false

'rpc',  //服务样式

'',  //传输协议,一直是这个。

''  //wsdl 'types'元素targetNamespace

);

// 注册web服务

$server-register('sendManifest', // 服务

array(

'projectid' = 'xsd:string',

'projectname'  = 'xsd:string',

'moduleid' = 'xsd:string',

'modulepath'  = 'xsd:string',

'bugtitle' = 'xsd:string',

'bugtype'  = 'xsd:string',

'openedby' = 'xsd:string',

'openeddate'  = 'xsd:string',

'assignedto'  = 'xsd:string',

'assigneddate' = 'xsd:string',

'fixedtime' = 'xsd:string',

'fullinfo' = 'xsd:string',

'bugmanifestid' = 'xsd:string'), // 输入参数;数组,指定类型

array('resultCode' = 'xsd:string'),  // 输出;数组,指定类型

'',  // namespace of method

'',  // soapaction

'rpc', // style

'encoded', // use

'serviceConsumeNotify' // documentation

);

$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) $HTTP_RAW_POST_DATA : '';

$server-service($HTTP_RAW_POST_DATA);

2.启动apache后,访问 ,如果页面如下图所示,表示webservice发布好了。

3.编写java客户端CallPhpServer .java 并调用php webservice

package com.php;

import java.util.HashMap;

import java.util.Map;

import org.apache.axis.client.Call;

import org.apache.axis.client.Service;

/**

* @author yangjuqi

* @createdate 2009-5-18 下午05:31:06

*

*/

public class CallPhpServer {

/**

* 测试方法

* @return

* @throws Exception

*/

public static String callManifest() throws Exception {

System.out.println("0");

Service service = new Service();

Call call = (Call) service.createCall();

System.out.println("1");

call.setTargetEndpointAddress(new java.net.URL(""));

call.setOperationName("sendManifest");

System.out.println("2");

Map map=new HashMap();

map.put("projectid", "109");

map.put("projectname", new String("新MM国际物流平台".getBytes(),"iso-8859-1"));

map.put("moduleid", "11");

map.put("modulepath", new String("财务管理".getBytes(),"iso-8859-1"));

map.put("bugtitle", new String("关于总账报表数据的问题".getBytes(),"iso-8859-1"));

map.put("bugtype", "TrackThings");

map.put("openedby", "zhangsan");

map.put("openeddate", "2009-05-31");

map.put("assignedto", "liumang");

map.put("assigneddate", "2009-05-31");

map.put("fixedtime", "2009-06-03");

map.put("fullinfo", new String("现在总账报表页面下的合计数据不对,烦请抓紧事件核实确认更正,谢谢!".getBytes(),"iso-8859-1"));

map.put("bugmanifestid", "E090500001");

call.addParameter("param", org.apache.axis.Constants.SOAP_ARRAY,javax.xml.rpc.ParameterMode.IN);

call.setReturnType(org.apache.axis.Constants.XSD_STRING);

System.out.println("3");

Object obj=call.invoke(new Object[]{map});

return obj.toString();

}

public static void main(String[] args) throws Exception {

System.out.println("::: call php webservice :::");

String str = callManifest();

String result=new String(str.getBytes("iso-8859-1"),"GBK");

System.out.println(result);

}

}

控制台显示结果:

::: call php webservice :::

log4j:WARN No appenders could be found for logger (org.apache.axis.i18n.ProjectResourceBundle).

log4j:WARN Please initialize the log4j system properly.

1

2

3

hello 109=新MM国际物流平台=11

到此,java作为客户端调用php的webservice服务端完成.

如何用php实现一个web服务器

下载PHPnow组件,解压到D盘,运行安装后就可以访问了。地址是127.0.0.1

如何使用PHP开发高效的WEB系统

PHP是一个很优秀的工具,它可以简单,也可以复杂。不一样的项目,应该用不一样的PHP。小项目 - 简单而直接的PHP一般对于一个功能页面在20以下的网站,我们可以用一个很简单的框架结构来写。在这个规模上,我建议是使用比较直接的面向过程编码方法,原因很简单,没有必要把class文件弄的N 多,结果controller里边就一个new就完了。当然,需求频繁变化的项目除外。在这个级别上,php优点表现的很明显:快速开发,一目了然。缺点同时也被隐藏得很好。中型项目 - 结构优美的OO化的PHP对于一个中型项目,我建议使用一个良好设计的框架来做,这个框架可以是基于MVC模型,封装了众多底层操作的,当然,一定要有一个好的最好是透明的cache机制,这样,我们为了适应变化而加入的OO机制可以运行得更快更好。在这个级别上。php的缺点开始凸现,像对OO支持的不完整(这个PHP5有很大改进),只能单线程模式。另外一些外围工具开始出现缺乏支持,像PHP没有好的重构工具,没有好的集成到IDE中的单元测试工具。优点当然还是原来的快速开发,广泛的可用的开源资源。大型项目 - 扩展、优化后的PHP这里的大型项目,简单的指分布式项目,就是说,你的程序需要被部署在N台服务器上了。在这个层级上,PHP比起j2ee的确缺乏很多支持。我曾和shadow在735上详细讨论过PHP要在大型系统上应用需要解决的一些问题,当然这些问题不光是PHP这个语言的问题,也包括了周边开发的问题:1 PHP的页面代码共享,PHP的源代码被载入内存一次以后,就在其中保留 - 这个用APC和Zend的优化器可以搞定。2 PHP页面之间的数据对象共享,a.php和b.php之间可以共享一个数据对象,比如数组,这个现在可以用序列化来作,但是会有文件io,这块可以用共享内存或者memcached来处理。3 PHP的数据库连接池,因为在多前端的情况下,PHP控制不住对数据库的连接,所以需要在数据库前边去作一个连接池,类似于sqlrelay的东西。另外数据缓存也是很重要的,大压力开发有一个tip,就是能不动数据库就不要动数据库。4 PHP的前端cache系统。一个透明的可控制的cache机制,确保网站的页面以最少次数查询数据库。这个有很多实现,但是没有找到特别好的。5 一个PHP应用,成功的解决调这几个问题以后,应付稍微大一点的压力是没有什么问题的。在这个级别上,重要的是,把PHP java C++ python之类融合起来,使其成为一个高效系统。我们可以用memcached来做分布式内存管理,可以用Lucene 来作全文检索,用ejb 容器来放一些业务逻辑组件,PHP则作为前端和系统的胶水,快速而灵活的把这些粘合起来。

如何使用PHP开发高效的web系统

PHP开发的都高效,如果特别在意效率,就不要用框架,自己写代码。

普及一下知识php如何做桌面客户端

WinBinder 是一种开源的 PHP 动态扩展(.dll) ,也算是脚本编程语言,为php 在window 下的开发提供用户界面UI ,它负责调用window 的API 接口。其运行 PHP 程序员轻松地使用 PHP 创建 Windows 应用程序。当然,这个只能在 Windows 下运行。本身是一个软件,php 程序员可以通过这个软件开发界面。官方网站说得很不错,无须编译php. 只要保存文件扩展为.phpw ,然后用 php.exe 打开就可以运行。具体开发感受如何,要试验一下才知道。初步感觉不会比php-gtk 差。

可以在此处下载到 WinBinder 的包 , 下那个 .zip 包,一般不需要用 .exe 的。下完之后解压缩,将 winbinder_xxx\PHP\PHP4\ext 目录下的(如果用的是 PHP5 则复制 PHP5 目录下的) php_winbinder.dll 复制到 PHP 扩展目录下,一般在 C:\php\extensions ,然后修改 php.ini 文件,加上:

extension=php_winbinder.dll

然后到打开命令行(cmd ),进入到 winbinder_xxx\Code\Samples 目录下,运行:

C:phpcliphp.exe manytests_main.phpw

这样就可以看到 Windows 窗口了,测试用的例子很多,可以都试试。我试了一下中文,还是支持得不错的,想想也是,WinBinder 是通过扩展的方式,加载到 PHP 中,其调用的都是 Windows 的 APIs 。实际上可以将 WinBinder 分为两层,一层是底层,叫 API 层,作为 PHP 扩展直接连接 Windows 的 API ,并为第二层(高层,叫 PHP 层)提供统一的调用接口。

你以为php只能做桌面应用?错移动应用也照样拿下。PHP for Android让你用你最熟悉的php开发android软件。

总之,php的插件工具虽然可以实现开发桌面客户端,但是并不建议,因为不方便而且开发效率极低。