无法通过WSDLDocument.php(PHP SOAP)生成XML

时间:2018-05-23 18:26:35

标签: php xml soap wsdl

我有一个简单的服务器/客户端SOAP交互,Shop类(shop.php)评论如下:

<?php

/** 
 * Class Shop
 * Objective: Handling my shop
 * 
 * @author Me
 */ 

require_once('config.php');
include("product.php");
include("fruit.php");

class Shop{

    /** 
     * Returns a string with family's products concatenated
     * 
     * @param string $familyId
     * @return string
     * 
     */ 
    public static function getFamilyProducts($familyId){

现在我把我的WSDLDocument.php放在我的类旁边(所有文件都在同一个文件夹中),并编写我的WSDLgenerator.php:

<?php
require_once('shop.php');
require_once('WSDLDocument.php');

$url = "http://localhost/Shop/server.php";
$uri = "http://localhost/Shop";

$wsdl = new WSDLDocument( "Shop", $url, $uri  );
echo $wsdl->saveXml();
?>

我的服务器正在为我的客户提供完美的服务,但无论如何,如果你想检查一下,

<?php
require_once('shop.php');
$uri = 'http://localhost/Shop';

$server = new SoapServer(null, array('uri' => $uri));
$server -> setClass('Shop');
$server -> handle();
?>

当我访问WSDLGenerator.php时,它正在打印“Class Shop Objective:Handling our shop”,但仅此而已。浏览器的检查器正在获取类名和行:

<wsdl:service name="Shop">
<wsdl:documentation>Class Shop Objective: Handling my shop
</wsdl:documentation>
...

有一些商店的电话(“ShopPortType”,“ShopBinding”,“ShopPort”),但没有关于我的功能及其参数的信号......

1 个答案:

答案 0 :(得分:0)

我发现了问题!如果该功能是公开的静态,那么XML就不会显示(不知道为什么会这样,但那就是它)。只需将它们更改为公开。