www.adminn.cn
站长正能量分享网!

php中SOAP WebService的wsdl文件生成类

AD:阿里云服务器企业会员更优惠 腾讯云香港,韩国免备案服务器1.8折优惠

php中SOAP WebService的wsdl文件生成类是一段老外写的代码非常的简单好用了并且我用了很久没碰到过什么问题,希望对各位有帮助.

代码如下:

  1. class SoapDiscovery { 
  2.     private $class_name = ''
  3.     private $service_name = ''
  4.     /** 
  5.      * SoapDiscovery::__construct() SoapDiscovery class Constructor. 
  6.      *  
  7.      * @param string $class_name 
  8.      * @param string $service_name 
  9.      * */ 
  10.     public function __construct($class_name = ''$service_name = '') { 
  11.         $this->class_name = $class_name
  12.         $this->service_name = $service_name
  13.     } 
  14.     /** 
  15.      * SoapDiscovery::getWSDL() Returns the WSDL of a class if the class is instantiable. 
  16.      *  
  17.      * @return string 
  18.      * */ 
  19.     public function getWSDL() { 
  20.         if (emptyempty($this->service_name)) { 
  21.             throw new Exception('No service name.'); 
  22.         } 
  23.         $headerWSDL = "<!–?xml version=\"1.0\" ?–>\n"
  24.         $headerWSDL.= "<definitions name=""$this-">service_name\" targetNamespace=\"urn:$this->service_name\" xmlns:wsdl=\"http://schemas.xmlsoap.org/wsdl/\" xmlns:soap=\"http://schemas.xmlsoap.org/wsdl/soap/\" xmlns:tns=\"urn:$this->service_name\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:SOAP-ENC=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns=\"http://schemas.xmlsoap.org/wsdl/\">\n"; 
  25.         $headerWSDL.= "<types xmlns=""http://schemas.xmlsoap.org/wsdl/\"">\n"
  26.         if (emptyempty($this->class_name)) { 
  27.             throw new Exception('No class name.'); 
  28.         } 
  29.         $class = new ReflectionClass($this->class_name); 
  30.         if (!$class->isInstantiable()) { 
  31.             throw new Exception('Class is not instantiable.'); 
  32.         } 
  33.         $methods = $class->getMethods(); 
  34.         $portTypeWSDL = '<porttype name="' . $this->service_name . 'Port">'
  35.         $bindingWSDL = '<binding name="' . $this->service_name . 'Binding" type="tns:' . $this->service_name . " port\"="">\n<soap:binding style=""rpc\"" transport=""http://schemas.xmlsoap.org/soap/http\"">\n"
  36.         $serviceWSDL = '<service name="' . $this->service_name . " \"="">\n<documentation>\n<port name="""" .="" $this-="">service_name . 'Port" binding="tns:' . $this->service_name . "Binding\"><soap:address location=""http://"" .="" $_server['server_name']="" ':'="" $_server['server_port']="" $_server['php_self']="" ""="">\n</soap:address></port>\n</documentation></service>\n"
  37.         $messageWSDL = ''
  38.         foreach ($methods as $method) { 
  39.             if ($method->isPublic() && !$method->isConstructor()) { 
  40.                 $portTypeWSDL.= '<operation name="' . $method->getName() . " \"="">\n" . '<input message="tns:' . $method->getName() . " request\"="">\n<output message=""tns:"" .="" $method-="">getName() . "Response\" />\n</output></operation>\n"
  41.                 $bindingWSDL.= '<operation name="' . $method->getName() . " \"="">\n" . '<soap:operation soapaction="urn:' . $this->service_name . '#' . $this->class_name . '#' . $method->getName() . " \"="">\n<input><soap:body use=""encoded\"" namespace=""urn:$this-">service_name\" encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\" />\n\n<output>\n<soap:body use="\"encoded\"" namespace="\"urn:$this-">service_name\" encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\" />\n</soap:body></output>\n</soap:body></soap:operation></operation>\n"; 
  42.                 $messageWSDL.= '<message name="' . $method->getName() . " request\"="">\n"
  43.                 $parameters = $method->getParameters(); 
  44.                 foreach ($parameters as $parameter) { 
  45.                     $messageWSDL.= '<part name="' . $parameter->getName() . " \"="" type=""xsd:string\"">\n"
  46.                 } 
  47.                 $messageWSDL.= "</part></message>\n"
  48.                 $messageWSDL.= '<message name="' . $method->getName() . " response\"="">\n"
  49.                 $messageWSDL.= '<part name="' . $method->getName() . " \"="" type=""xsd:string\"">\n"
  50.                 $messageWSDL.= "</part></message>\n"
  51.             }  //开源软件:phpfensi.com 
  52.         } 
  53.         $portTypeWSDL.= "</soap:binding></binding></porttype>\n"
  54.         $bindingWSDL.= "\n"
  55.         return sprintf('%s%s%s%s%s%s'$headerWSDL$portTypeWSDL$bindingWSDL$serviceWSDL$messageWSDL'</types></definitions>'); 
  56.     } 
  57.     /** 
  58.      * SoapDiscovery::getDiscovery() Returns discovery of WSDL. 
  59.      *  
  60.      * @return string 
  61.      * */ 
  62.     public function getDiscovery() { 
  63.         return "<!–?xml version=\"1.0\" ?–>\n<disco:discovery xmlns:disco=""http://schemas.xmlsoap.org/disco/\"" xmlns:scl=""http://schemas.xmlsoap.org/disco/scl/\"">\n<scl:contractref ref=""http://"" .="" $_server['server_name']="" ':'="" $_server['server_port']="" $_server['php_self']="" "?wsdl\"="">\n</scl:contractref></disco:discovery>"
  64.     } 

使用方法如下:

$a = new SoapDiscovery();

然后里面的方法与类就可以直接调用了.

模板优惠价: (点击购买)
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《php中SOAP WebService的wsdl文件生成类》
文章链接:https://www.adminn.cn/news/7503.html
本站资源模板仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。2021.5月起,网站调整,暂不再分享免费模板。谢谢理解

Adminn.Cn 站长分享圈

帝国CMS精品模板腾讯云优惠券,代金券

2次开发,学习研究使用!扫码支付后联系QQ677123发货!

支付宝扫一扫打赏