Не удается сгенерировать XML через WSDLDocument.php (PHP SOAP) - PullRequest
0 голосов
/ 23 мая 2018

У меня есть простое взаимодействие сервера / клиента 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, он печатает «Цель магазина класса: работа с моим магазином», но не более того.Инспектор браузера получает имя класса и такие строки:

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

Есть несколько вызовов Shop ("ShopPortType", "ShopBinding", "ShopPort"), но нет сигнала о моих функциях и их параметрах...

1 Ответ

0 голосов
/ 23 мая 2018

Я НАШЕЛ ПРОБЛЕМУ!Если функция общедоступна static , XML просто не будет отображаться (не знаю почему, но это так).Просто измените их на общедоступные.

...