[wsdl文件怎么生成]php生成wsdl文件方法总结

时间:2017-11-19  来源:php安装  阅读:

在zend studio9中,与之前版本不一样的是,你需要单独安装wsdl插件,才可以使用,步骤如下:

1、打开zendstudio9,选择help(帮助)->welcome(欢迎

2、在右边的列表中找到WSDL Support,勾选

3、点击Apply changes(应用修改)

4、zde会自动安装,然后提示要重启,点击restart now(现在重新启动)

wsdl支持安装完毕,下面我们来生成一个wsdl文件,步骤如下:

1、选择保存wsdl的项目文件夹

2、右键-new(新建)->other(其他)

3、在弹出的对话框中选择web services,在下级菜单中选择WSDL file,点击next进入下一步

4、命名你的wsdl文件,点击next进入下一步

5、修改target namespace(目标名称空间),其他不变,点击finish。

一个wsdl文件生成完毕,如下图所示:

TestSoapSoap下面填写php webService 如soapservice.php

在NewOperation上点击鼠标右键:
NewOperation:添加方法。WebService里需要提供给别人调用的方法名
input :设置输入参数名和类型
output:设置返回值。
Add part:如果在input里添加,就是添加多个参数
set Type / set Element: 设置参数的input/output类型Type包含常见的数据类型(int,string,boolean,float,time…),Element就是自定义元素类型。

.利用SoapDiscovery.class.php生成

 代码如下 class SoapDiscovery {
 private $class_name = "";
 private $service_name = "";
 
 /**
  * SoapDiscovery::__construct() SoapDiscovery class Constructor.
  *
  * @param string $class_name
  * @param string $service_name
  **/
 public function __construct($class_name = "", $service_name = "") {
  $this->class_name = $class_name;
  $this->service_name = $service_name;
 }
 
 /**
  * SoapDiscovery::getWSDL() Returns the WSDL of a class if the class is instantiable.
  *
  * @return string
  **/
 public function getWSDL() {
  if (empty($this->service_name)) {
   throw new Exception("No service name.");
  }
  $headerWSDL = "n";
  $headerWSDL.= "n";
  $headerWSDL.= "n";
 
  if (empty($this->class_name)) {
   throw new Exception("No class name.");
  }
  
  $class = new ReflectionClass($this->class_name);
  
  if (!$class->isInstantiable()) {
   throw new Exception("Class is not instantiable.");
  }
  
  $methods = $class->getMethods();
  
  $portTypeWSDL = "service_name."Port">";
  $bindingWSDL = "service_name."Binding" type="tns:".$this->service_name."Port">nn";
  $serviceWSDL = "service_name."">nnservice_name."Port" binding="tns:".$this->service_name."Binding">nnn";
  $messageWSDL = "";
  foreach ($methods as $method) {
   if ($method->isPublic() && !$method->isConstructor()) {
    $portTypeWSDL.= "getName()."">n"."getName()."Request" />ngetName()."Response" />nn";
    $bindingWSDL.= "getName()."">n"."Action="urn:".$this->service_name."#".$this->class_name."#".$method->getName()."" />nnnnnnn";
       $messageWSDL.= "getName()."Request">n";
    $parameters = $method->getParameters();
    foreach ($parameters as $parameter) {
     $messageWSDL.= "getName()."" type="xsd:string" />n";
    }
    $messageWSDL.= "
n";
    $messageWSDL.= "getName()."Response">n";
    $messageWSDL.= "getName()."" type="xsd:string" />n";
    $messageWSDL.= "
n";
   }
  }
  $portTypeWSDL.= "
n";
  $bindingWSDL.= "n";
  return sprintf("%s%s%s%s%s%s", $headerWSDL, $portTypeWSDL, $bindingWSDL, $serviceWSDL, $messageWSDL, "
");
 }
 
 /**
  * SoapDiscovery::getDiscovery() Returns discovery of WSDL.
  *
  * @return string
  **/
 public function getDiscovery() {
  return "nnn";
 }
}
 
?>

使用案例:

 代码如下

    include("Compute.php"); //你要生成的文件
    include("SoapDiscovery.class.php");
   
    $disco = new SoapDiscovery("Compute","Compute");//第一个参数是类名(生成的wsdl文件就是以它来命名的),即person类,第二个参数是服务的名字(这个可以随便写)。
    $wsdl = $disco->getWSDL();
    //$disco->getDiscovery();
    $fp = fopen("Compute.wsdl", "w");
    fwrite($fp, $wsdl);
?>


方法二最重要的就是我们的SoapDiscovery.class.php文件了,这个文件网上有下载大家可百度找一下。

[wsdl文件怎么生成]php生成wsdl文件方法总结

http://m.bbyears.com/jiaocheng/37173.html

推荐访问:
相关阅读 猜你喜欢
本类排行 本类最新