仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1563|回复: 18
打印 上一主题 下一主题

[学习教程] PHP网站制作之PHP5中利用Web办事会见J2EE使用法式(1)...

[复制链接]
只想知道 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-4 00:29:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
讲了这么多,无非是想说:学习PHP不仅要掌握方法,更多的是付出汗水,我不希望看到中途放弃的人,相信自己,相信自己的选择,更要相信自己的能力,如果自己想放弃,暴力一点的话,就自己抽自己一个嘴巴。j2ee|php5|web|web办事|法式|会见   良多 Web 开辟人员喜好 PHP 的丰厚功效和复杂易用,但有时分他们需求会见 J2EE 使用法式办事器中已有的营业逻辑。本文将经由过程一些例子申明若何经由过程 PHP 5 中新的 SOAP 扩大利用 Web 办事来会见 J2EE 使用法式,而不用离开 PHP 情况,也不必进修新的编程模子。

  PHP、Web 办事和 SOAP 简介

  本文将引见若何从 PHP 剧本中会见企业使用法式。您多是一名 PHP 法式员,需求为部分 Web 使用法式编写代码,以便会见公司总部以 Web 办事体例供应的办事。您也许是一名有经历的 J2EE 开辟人员,但愿多懂得一点 PHP 及其使用。本文中的例子是一个运转在 IBM WebSphere? 使用法式办事器上的 Enterprise JavaBean(EJB),但本文并没有会商 Web 办事的安排。它的次要方针是引见若何从 PHP 中利用 Web 办事,这一点可以使用于各类 Web 办事完成。

  甚么是 PHP?

  PHP:Hypertext Preprocessor(超文本预处置器,PHP)是一种盛行的办事器端剧本言语,用于创立静态 Web 内容。PHP 注释器为主流平台供应了源代码或编译好的二进制文件,这些平台包含大多半 Linux? 版本、Windows?、Mac OS X 和 iSeries?。

  的确无数百万台 Web 办事器正在运转 PHP,个中大局部利用的是 PHP 4。2004 年 7 月推出的 PHP 5 正在逐步被采取。PHP 5 改善了对象模子,底层的内存办理也从多线程和功能的角度从头作了设计。然而需求注重多数没法向后兼容的修正,PHP 手册中对这些停止了纪录。

  甚么是 Web 办事手艺?

  Web 办事指的是自成系统的、模块化的使用法式,客户机和办事在这类使用法式中是松耦合的。关于 Web 办事的具体信息,关于本文来讲,您只需求懂得个中的次要手艺:

  SOAP(复杂对象会见协定)界说了客户机与办事器之间传递的动静。动静采取 XML 格局。SOAP 自力于平台、编程言语、收集和传输层。本文将会商 HTTP 上的 SOAP。

  WSDL(Web 办事描写言语)是用于描写 Web 办事的基于 XML 的言语,描写内容包含办事的地位、格局、操作、参数和数据类型。

  UDDI(一致描写、发明和集成)是用 API 和 UDDI Registry 完成来供应在收集上存储和检索 Web 办事信息的办法。

  本文包含 SOAP 动静和 WSDL 文档的一些例子,但没有供应 UDDI 的例子。

  XMethods 网站是一个有效的 Web 办事东西,在那边可以找到在各类办事器平台上完成的可公然利用的 Web 办事的列表。可使用本文中的例子很便利地会见从 XMethods 当选择的办事。

  SOAP 和 PHP

  有多种产物答应在 PHP 4 剧本中利用 SOAP,最多见的产物是 PEAR::SOAP 和 NuSOAP。在写这篇文章的时分,这些产物在与 PHP 5 的兼容方面还存在成绩,估量很快就会晋级。

  PHP 5 中新增了内置的 SOAP 扩大,咱们称之为 ext/soap。它是作为 PHP 的一局部供应的,因而不需求下载、装置和办理独自的包。这是第一个用 C 而不是 PHP 为 PHP 编写的 SOAP 完成,因而作者宣称它的速度要快很多。

  由于新的扩大是 PHP 的完全构成局部之一,相干文档包括在 PHP 手册的 Function Reference 局部。SOAP 参考是以一个主要的免责声明入手下手的:

  正告:该扩大是实验性的(EXPERIMENTAL)。本扩大的行动,包含关于本扩大的函数名和其他内容,在今后的 PHP 版本中随时能够改动,不另行告诉。利用该扩大的风险自信。

  正告看起来有点让人忧虑,但实践上这个扩大仿佛失掉了很好的撑持。和任何新代码一样,该扩大也存在缺点,然而呈报的成绩凡是很快就可以失掉修改。在 PHP 站点上可以看到缺点列表。咱们估量,在未来的 PHP 版本中,该扩大将从实验性功效转为主流功效。

  装置 PHP SOAP 扩大

  应当在 Web 办事器上装置并运转 PHP 5。咱们的实行采取 PHP 5.0.2,这是如今最新的版本,修改了 PHP 5 初始版本中的良多毛病。下面已提到,ext/soap 是作为 PHP 5 的一局部供应的,因而不需求独自下载,然而您能够需求对它做一些修正来启用它。需求做哪些修正则取决于您是下载源代码,本人编译 PHP,仍是直接下载二进制文件。

  假如下载的是 PHP 源代码,并在本人的平台上编译,那末能够需求从头停止构建,由于在默许情形下没有启用 ext/soap。反复之前的构建进程,并在 configure 号令中添加 --enable-soap 选项。

  假如下载的是预编译平台的二进制文件,ext/soap 能够已编译但没有加载,因而需求更新 PHP 设置装备摆设,以便加载 ext/soap。编纂 php.ini 并找到 Dynamic Extensions 局部,在这里增添一行代码来主动加载该扩大。

  在 Windows 上,这一代码行是:

extension=php_soap.dll
  在 UNIX 上是:

extension=php_soap.so
  假如之前没有加载过任何可选的扩大,能够还要设置 extension_dir 指令,让它指向包括扩大库(个中包含 php_soap)的目次,好比:

extension_dir="C:/php/ext/"(在 Windows 上利用正斜杠)
  不要将目次信息放到 extension 指令中,需求的话可使用 extension_dir。

  关于 Windows,可以下载其他两个二进制包。Windows 装置法式包不含任何扩大,因而要利用 Windows zip 紧缩包,这个紧缩包中包括 ext/soap。

  注重,ext/soap 依附于 GNOME xml 库,这个库必需利用 2.5.4 或更高版本。假如版本不敷高,可以从 xmlsoft装置 libxml2。

  最初,ext/soap 在 php.ini 中有本人的设置装备摆设局部,在完成设置装备摆设以后,ext/soap 以下所示:

[soap]
; Enables or disables WSDL caching feature.
soap.wsdl_cache_enabled=1
; Sets the directory name where SOAP extension will put cache files.
soap.wsdl_cache_dir="/tmp"
; (time to live) Sets the number of second while cached file will be used
; instead of original one.
soap.wsdl_cache_ttl=86400
  这段设置装备摆设掌握了 SOAP 扩大的 WSDL 缓存特征。默许情形下,WSDL 描写文件在 24 小时(86400 秒)内都缓存在 /tmp 目次下。咱们迟些时分再会商这些内容,如今要设置 soap.wsdl_cache_enabled=0,不然,在开辟代码时,您会碰到一些稀里糊涂的行动。完成开辟以后,要记得翻开 WSDL 缓存,使代码运转得更快。

  为了便于参考,咱们将在两种情况中利用 ext/soap:

Linux Centos 3.3(Red Hat EL 3 的收费重建版本)、Apache 2.0.47、PHP 5.0.2,需求晋级 libxml2 到 2.6.12。
Windows XP SP1、Apache 2.0.46、PHP 5.0.2 二进制紧缩包、libxml2 2.6.11。

  这些申明一样合用于其他设置装备摆设。

Weather Forecast 使用法式

  咱们要从 PHP 中会见的 Web 办事是一个天色预告使用法式。这是 WebSphere Version 5.1 Application Developer 5.1.1 Web Services Handbook 中开辟的示例使用法式。下载示例 Weather Forecast 使用法式,请参阅本文前面的下载局部。这本书设计了几种分歧的场景,但咱们只思索一种,在该书中,这类场景称为“自下而上的开辟,利用 HTTP 传输和 SOAP 动静从会话 EJB 生成 Web 办事”。在这里,自下而上的意思是说,Web 办事是环绕现有企业使用法式停止包装的。

图 1. 天色预告使用法式

                               
登录/注册后可看大图

  图 1 中标出的 Weather Forecast 使用法式的次要构成包含:

  展望天色的后台 WEATHER 数据库。天色预告中的信息包含:

   风向,八个方位
   风速,千米/小时
   气温,摄氏度
   天色情况:晴、有时阴、阴、雨、暴雨
   日期

  WeatherPredictor 类用于会见 WEATHER 数据库。假如数据库中没有合用于恳求日期的预告,那末 WeatherPredictor 会随机生成天色展望(与实践的天色预告分歧),并将它保留到数据库中。

  营业逻辑由 WeatherForecastEJB 会话 bean 供应,并公然为 Web 办事,它供应三项操作:

  getDayForecast 前往某一天的天色预告。

  getForecast 前往某个时代的天色预告。

  getTemperatures 前往某个时代的气温展望。

  将这个会话 bean 安排为 Web 办事所需的一切元素都是由 WebSphere Studio Application Developer 的 Web 办事导游生成的,而且是作为 ItsoWebService2RouterWeb 项陌生成的。路由器 servlet 是毗连 SOAP 动静和 EJB 容器的桥梁,需求设置装备摆设和安排路由器 servlet,经由过程 URL ItsoWebService2EJBRouterWeb/services/WeatherServiceEJB 来使 Weather 办事可用。WSDL 文档 itso.session.WeatherForecastEJB.wsdl 在 ItsoWebService2EJBRouterWeb/wsdl 目次中。

  Java 客户机是这本书中开辟的多个 Weather Service 客户机之一。ItsoWebService2EJBClient 项目中的 WeatherClientEJB 是一个复杂的 Java servlet,挪用 getForecast Web 办事操作。典范的运转了局以下所示:


                               
登录/注册后可看大图

图 2. Java WeatherClient
  下一步是在 PHP 中创立等价的客户机功效。

  浏览本文不需求本人运转这个例子,可以针对从 XMethods 网站选择的办事创立 PHP 客户机。

  你的留言本应该加入注册以及分页功能了,而如果你更强的话,UI(用户界面)也可以加强,完成之后,感觉是不是特有成就感?不管怎么样,咱好歹是写了一个动态网站程序了,放在自己的网站上耍耍吧。
分手快乐 该用户已被删除
沙发
发表于 2015-2-4 13:14:41 | 只看该作者
php里的数组为空的时候是不能拿来遍历的;(这个有点低级啊,不过我刚被这个边界问题墨迹了好长一会)
透明 该用户已被删除
板凳
发表于 2015-2-8 16:06:11 | 只看该作者
基础有没有对学习php没有太大区别,关键是兴趣。
飘灵儿 该用户已被删除
地板
发表于 2015-2-25 20:34:32 | 只看该作者
首先声明:我是一个菜鸟,是一个初学者。学习了一段php后总是感觉自己没有提高,无奈。经过反思我认为我学习过程中存在很多问题,我改变了学习方法后自我感觉有了明显的进步。
5#
发表于 2015-3-1 09:45:18 | 只看该作者
写的比较杂,因为我也是个新手,不当至于大家多多指正。
莫相离 该用户已被删除
6#
发表于 2015-3-6 13:16:40 | 只看该作者
对于懒惰的朋友,我推荐php的集成环境xampp或者是wamp。这两个软件安装方便,使用简单。但是我还是强烈建议自己动手搭建开发环境。
再现理想 该用户已被删除
7#
发表于 2015-3-9 03:08:26 | 只看该作者
找到的的资料很多都是在论坛里的,需要注册,所以我一般没到一个论坛都注册一个id,所有的id都注册成一样的,这样下次再进来的时候就不用重复注册啦。当然有些论坛的某些资料是需要的付费的。
活着的死人 该用户已被删除
8#
发表于 2015-3-13 08:09:52 | 只看该作者
对于懒惰的朋友,我推荐php的集成环境xampp或者是wamp。这两个软件安装方便,使用简单。但是我还是强烈建议自己动手搭建开发环境。
飘飘悠悠 该用户已被删除
9#
发表于 2015-3-14 22:30:49 | 只看该作者
建数据库表的时候,int型要输入长度的,其实是个摆设的输入几位都没影响的,只要大于4就行,囧。
灵魂腐蚀 该用户已被删除
10#
发表于 2015-3-21 06:09:22 | 只看该作者
首先声明:我是一个菜鸟,是一个初学者。学习了一段php后总是感觉自己没有提高,无奈。经过反思我认为我学习过程中存在很多问题,我改变了学习方法后自我感觉有了明显的进步。
爱飞 该用户已被删除
11#
发表于 2015-4-9 11:11:11 | 只看该作者
有时候汉字的空格也能导致页面出错,所以在写代码的时候,要输入空格最好用引文模式。
深爱那片海 该用户已被删除
12#
发表于 2015-5-1 07:11:18 | 只看该作者
php里的数组为空的时候是不能拿来遍历的;(这个有点低级啊,不过我刚被这个边界问题墨迹了好长一会)
简单生活 该用户已被删除
13#
发表于 2015-5-6 17:34:40 | 只看该作者
爱上php,他也会爱上你。
小妖女 该用户已被删除
14#
发表于 2015-5-10 00:41:49 | 只看该作者
这些中手常用的知识,当你把我说的这些关键字都可以熟练运用的时候,你可以选择自己
金色的骷髅 该用户已被删除
15#
发表于 2015-5-12 14:29:55 | 只看该作者
其实也不算什么什么心得,在各位大侠算是小巫见大巫了吧,望大家不要见笑,若其中有错误的地方请各位大虾斧正。
老尸 该用户已被删除
16#
发表于 2015-6-20 21:41:13 | 只看该作者
个人呢觉得,配wamp 最容易漏的一步就是忘了把$PHP$目录下的libmysql.dll拷贝到windows系统目录的system32目录下,还有重启apache。
谁可相欹 该用户已被删除
17#
发表于 2015-6-26 21:41:07 | 只看该作者
这些都是最基本最常用功能,我们这些菜鸟在系统学习后,可以先对这些功能深入研究。
柔情似水 该用户已被删除
18#
发表于 2015-7-4 00:44:25 | 只看该作者
我要在声明一下:我是个菜鸟!!我对php这门优秀的语言也是知之甚少。但是我要在这里说一下php在网站开发中最常用的几个功能:
第二个灵魂 该用户已被删除
19#
发表于 2015-7-11 02:06:25 | 只看该作者
爱上php,他也会爱上你。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-22 23:03

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表