我有一个简单的服务器/客户端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”),但没有关于我的功能及其参数的信号......
答案 0 :(得分:0)
我发现了问题!如果该功能是公开的静态,那么XML就不会显示(不知道为什么会这样,但那就是它)。只需将它们更改为公开。