给ThinkPHP应用程序添加web services,首先需要启动soap模块,这里仅需要修改php.int文件即可,extension=php_soap.dll
接着编写服务类。这里单独建立一个Webserver文件夹,把所有的web服务类都放置在里面。这样做的好处不言而喻,一方面为了组织的方便,另一方面可以实现团队协作开发,相互之间不会有过多影响。如下图所示:
在Webserver文件夹下面,我们可以编写各种业务逻辑代码,这里仅是演示之用,所以非常简单。当然了,你还可以在里面实现更为复杂的逻辑。
class Printers extends Base { public function printme() { return 'Hello'; } }
现在,我们就可以实现web服务端了。在IndexAction.class.php文件里面编写一段web服务端代码,启动web服务。
class IndexAction extends Action{ public function index(){ import('@.Webserver.*'); $arrOption=array('uri'=>'http://localhost/mysoap/'); $objServer=new SoapServer(null,$arrOption); $objServer->setClass('Printers'); $objServer->handle(); } }
接着,我们在web客户端编写一小段代码,就可以获取提供的web服务了。
public function PrintHello() { $arrOption=array( 'uri'=>'http://localhost/mysoap/', 'location'=>'http://localhost/mysoap/index.php/Index/index', 'trace'=>true ); $objClient=new SoapClient(null,$arrOption); try{ $ret=$objClient->printme(); } catch(Exception $e) { } echo $ret; }
现在你在浏览器上就可以查看到 PrintHello 输出的内容了。